当前位置: 首页 > news >正文

Java-类型和变量(基于C语言的补充)

一个简单的Java程序

args){ System.out.println("Hello,world"); } }

通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成:
1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。
2.类:类中带有一个或多个方法。方法必须在类的内部声明。
3.方法:在方法的花括号中编写方法应该执行的语句。 总结一下:类存在于源文件里面;方法存在于类中;语句存在于方法中。

注意:在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。否则会报如下的错误
在这里插入图片描述

如何运行Java程序
在这里插入图片描述

一个面试题 JDK、JRE、JVM之间的关系?
JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。
JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境。
JVM:Java虚拟机,运行Java代码
在这里插入图片描述

可以使用javadoc工具从Java源码中抽离出注释

/*** 文档注释,一般放在类的开始或者方法的开始* @version v1.0.0* @author  abc* */
public class HelloWorld{/*** [这是第一个java的程序]* @param args [这个参数是运行是的参数]*/public static void main(String[] args){/*块注释for(int i = 0;i < args.length;i++) {System.out.println(args[i]);}*/// 单行注释:System.out.println是Java中标准输出,会将内容输出到控制台for(int i=0;i<args.length;i++){System.out.println(args[i]);}//System.out.println("hello world");System.out.println("你好");}
}

命令如下

javadoc -d myHello -author -version -encoding UTF-8 -charset UTF-8 HelloWorld.java

在生成的文件夹中打开,下图所指文件
在这里插入图片描述
生成一个说明书,如下
在这里插入图片描述

标识符
在程序中,Test称为类名,main称为方法名,也可以将其称为标识符,即:在程序中由用户给类名、方法名或者变量所取的名字。
【硬性规则】 标识符中可以包含:字母、数字以及 下划线和 $ 符号等等。 注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写。
【软性建议】 类名:每个单词的首字母大写(大驼峰),如HelloWorld
方法名:首字母小写,后面每个单词的首字母大写(小驼峰),如myBall 变量名:与方法名规则相同

在这里插入图片描述

数据类型与变量

字面常量
常量即程序运行期间,固定不变的量称为常量,比如:一个礼拜七天,一年12个月等 字面常量的分类:

  1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。
  2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000
  3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49
  4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘1’
  5. 布尔常量:只有两种true和false
  6. 空常量:null(后面了讲) 在这里插入图片描述

注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。

在这里插入图片描述

数据类型
在Java中数据类型主要分为两类:基本数据类型和引用数据类型。
基本数据类型有四类八种:

  1. 四类:整型、浮点型、字符型以及布尔型
  2. 八种: 在这里插入图片描述

在这里插入图片描述

正数处之所以减去1,是因为这里包含了0

不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节

变量
在这里插入图片描述
在一行可以定义多个相同类型的变量
在这里插入图片描述

整型变量 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出

局部变量在使用之前必须要赋初值,否则编译报错
在这里插入图片描述

int型变量所能表示的范围
Integer为包装类型
在这里插入图片描述

长整型变量
为了区分int和long类型,一般建议:long类型变量的初始值之后加L
long型变量所能表示的范围
在这里插入图片描述

短整型变量
short在任何系统下都占2个字节
在这里插入图片描述

字节型变量byte
byte在任何系统下都占1个字节;
字节的包装类型为Byte
在这里插入图片描述

浮点型变量

双精度浮点型double
在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。
如果想得到 0.5,需要使用 double 类型计算
在这里插入图片描述
double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。
在这里插入图片描述

单精度浮点型
在这里插入图片描述

字符型变量
Java 中使用 单引号 + 单个字母 的形式表示字符字面值,占用两个字节
在这里插入图片描述
在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节,表示的字符种类更多, 包括中文

布尔型变量
boolean 类型的变量只有两种取值, true 表示真, false 表示假
Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法
Java虚拟机规范中,并没有明确规定boolean占几个字节
在这里插入图片描述

类型转换 Java中类型转换主要分为两类:自动类型转换(隐式) 和强制类型转换(显式)。 自动类型转换(隐式)
特点:数据范围小的转为数据范围大的时会自动进行。

在这里插入图片描述
a1和a2都是整形,a1的范围小,a2的范围大,当将a1赋值给a2时,编译器会自动将a1提升为long类型,然后赋值
在这里插入图片描述
编译报错,long的范围比int范围大,会有数据丢失,不安全

强制类型转换(显式) 强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。

在这里插入图片描述
将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
在这里插入图片描述
100默认为int,没有超过byte范围,隐式转换(对int类型特殊处理);257默认为int,超过byte范围,需要显示转换,否则报错

强制类型转换不一定能成功,不相干的类型不能互相转换,boolean和数值类型在这里插入图片描述

类型提升 数据类型小的会被提升到数据类型大的
在这里插入图片描述

byte与byte的运算
在这里插入图片描述
原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算 正确的写法如下
在这里插入图片描述

字符串类型

在Java中使用String类定义字符串类型
在这里插入图片描述
s1+s2表示:将s1和s2进行拼接

在有些情况下,需要将字符串和整形数字之间进行转换 int 转成 String
在这里插入图片描述
第一种方法利用String类中的方法;
第二种方法,字符串和其它类型的相加,结果就是字符串
在这里插入图片描述
在这里插入图片描述

String 转成 int
在这里插入图片描述

相关文章:

Java-类型和变量(基于C语言的补充)

一个简单的Java程序 args){ System.out.println("Hello,world"); } }通过上述代码&#xff0c;我们可以看到一个完整的Java程序的结构&#xff0c;Java程序的结构由如下三个部分组成&#xff1a; 1.源文件&#xff08;扩展名为*.java)&#xff1a;源文件带有类的定义…...

机器学习笔记:李宏毅diffusion model

1 概念原理 首先sample 一个都是噪声的vector然后经过denoise network 过滤一些杂质接着继续不断denoise&#xff0c;直到最后出来一张清晰图片 【类似于做雕塑&#xff0c;一开始只是一块石头&#xff08;噪声很杂的雕塑&#xff09;&#xff0c;慢慢雕刻出想要的花纹】 同一个…...

STM32--TIM定时器(2)

文章目录 输出比较PWM输出比较通道参数计算舵机简介直流电机简介TB6612 PWM基本结构PWM驱动呼吸灯PWM驱动舵机PWM控制电机 输出比较 输出比较&#xff0c;简称OC&#xff08;Output Compare&#xff09;。 输出比较的原理是&#xff0c;当定时器计数值与比较值相等或者满足某种…...

git Authentication failed

情况是这样的&#xff0c;之前看代码只是clone了一份&#xff0c;但随着分支越来越多&#xff0c;有时候切换分支时必须先把修改的代码 stash 一下&#xff0c;觉得很麻烦&#xff0c;于是又clone了一份代码。然后pull代码是正常的&#xff0c;当push 代码的时候&#xff0c;去…...

【软考】2023系统架构设计师考试

目录 1 软考资格设置 2 考试报名 3 考试准备 4 参加考试 5 考试感受 6 其他 1 软考资格设置 2 考试报名 报名网址&#xff1a;https://www.ruankao.org.cn/ 3 考试准备 4 参加考试 2023年下半年系统架构设计师考试时间为11月4、5日。 5 考试感受 6 其他 最近好像有地区…...

opencv基础55-获取轮廓的特征值及示例

轮廓自身的一些属性特征及轮廓所包围对象的特征对于描述图像具有重要意义。本节介绍几个轮廓自身的属性特征及轮廓所包围对象的特征。 宽高比 可以使用宽高比&#xff08;AspectRation&#xff09;来描述轮廓&#xff0c;例如矩形轮廓的宽高比为&#xff1a; 宽高比 宽度&am…...

OpenCV图像处理——形态学操作

目录 连通性形态学操作腐蚀和膨胀开闭运算礼帽和黑帽 连通性 形态学操作 形态学转换是基于图像形状的一些简单操作。它通常在二进制图像上执行。腐蚀和膨胀时两个基本的形态学运算符。然后它的变体形式如开运算&#xff0c;闭运算&#xff0c;礼帽黑帽等 腐蚀和膨胀 cv.erode…...

修改VS Code终端的显示行数

文章目录 前言修改VS Code终端显示行数参考 前言 在我们使用VS Code运行代码的过程中&#xff0c;有时需要再终端中显示很多的运行过程信息或者结果。然而&#xff0c;VS Code的终端默认显示1000行的内容&#xff0c;随着显示内容的增多&#xff0c;之前的内容就丢失了。为了解…...

C++学习| MFC简单入门

前言&#xff1a;因为接手了CMFC的程序&#xff0c;所以需要对MFC编程方面有所了解。 C之MFC简单入门 MFC相关的概念MFCWIN32QT MFC项目基本操作MFC项目创建MFC项目文件解读界面和代码数据交互——加法器 MFC相关的概念 MFC MFC&#xff08;Microsoft Foundation Classes微软…...

“一日之际在于晨”,欢迎莅临WAVE SUMMIT上午场:Arm 虚拟硬件早餐交流会

8月16日&#xff0c;盛夏的北京将迎来第九届WAVE SUMMIT深度学习开发者大会。在峰会主论坛正式开启前&#xff0c;让我们先用一份精美的元气早餐&#xff0c;和一场“Arm虚拟硬件交流会”&#xff0c;唤醒各位开发小伙伴的开发魂&#xff01; 8月16日&#xff0c;WAVE SUMMIT大…...

leetcode454. 四数相加 II

题目&#xff1a;leetcode454. 四数相加 II 描述&#xff1a; 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] num…...

PHP证券交易员学习网站mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP证券交易员学习网站 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 下载地址https://download.csdn.net/download/qq_41221322/88205549 PHP证券交易员…...

对p-n结/AlGaN/GaN HEMTs中n-GaN掺杂浓度对栅极可靠性的影响

目录 第35届功率半导体器件与集成电路国际研讨会论文集2023年5月28日至6月1日&#xff0c;中国香港南方科技大学电气电子工程系&#xff0c;深圳标题&#xff1a;Impacts of n-GaN Doping Concentration on Gate Reliability of p-n Junction/AlGaN/GaN HEMTs摘要信息解释研究了…...

Mac M2 Pro安装使用Cocoapods

Mac Pro M2安装使用Cocoapods 在新公司要做iOS开发&#xff0c;所以在新电脑上安装Cocoapods 在升级gem&#xff0c;sudo gem update --system&#xff0c;和安装cocoapods时都遇到如下的提示&#xff1a; ERROR: While executing gem ... (Errno::EPERM)Operation not per…...

枚举缓存工具

此文章为笔记&#xff0c;为阅读其他文章的感受、补充、记录、练习、汇总&#xff0c;非原创&#xff0c;感谢每个知识分享者。 文章目录 1. 背景2. 枚举缓存3. 样例展示4. 性能对比5. 总结 本文通过几种样例展示如何高效优雅的使用java枚举消除冗余代码。 1. 背景 枚举在系统…...

【BASH】回顾与知识点梳理(二十五)

【BASH】回顾与知识点梳理 二十五 二十五. 特殊shell、PAM 模块、讯息传递和大量建置账号25.1 特殊shell特殊的 shell, /sbin/nologin 25.2 PAM模块25.3 Linux 主机上的用户讯息传递查询使用者&#xff1a; w, who, last, lastlog使用者对谈&#xff1a; write, mesg, wall使用…...

什么是Node js?什么是React?有什么区别

JavaScript是当今最流行的编程语言之一&#xff0c;它用于开发多种技术&#xff0c;两种这样的技术是Node.js和React。许多学生很难理解Nodejs和React之间的区别。 React和Nodejs之间的主要区别在于它们的使用位置。Nodejs 用于开发应用程序的服务器端&#xff0c;而Reactjs用于…...

使用postman做接口测试

1.接口测试&#xff1a;针对软件对外提供服务的接口的输入输出进行测试&#xff0c;以及接口间相互逻辑的测试&#xff0c;验证接口功能与接口描述文档的一致性 2.接口测试流程&#xff1a; 1&#xff09;获取接口信息&#xff1a;通过接口文档或抓包来获取接口的基本调用方式和…...

VMware Workstation 如何启用复制粘贴

产品&#xff1a;VMware Workstation 16 Pro 版本&#xff1a;16.1.1 build-17801498 我们刚安装好的 VMware Workstation 会发现无法复制粘贴文件到虚拟机中&#xff0c;如下为解决方案&#xff1a; 1.点击 虚拟机&#xff0c;点击 安装 VMware Tools(T)...。 2.虚拟机下面会…...

免费小程序商城搭建之b2b2c o2o 多商家入驻商城 直播带货商城 电子商务b2b2c o2o 多商家入驻商城 直播带货商城 电子商务 bbc

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...