3.23 JavaSE变量的类型和转化

3.23 JavaSE变量的类型和转化

注释

注释:解释说明的文字,且注释不会被编译

​ 重要性:代码中必须存在的,必有的内容,可以大大提高程序可读性

注释分类:单行注释、多行注释、文档注释

​ 三种注释都可以嵌套单行注释,都不可以嵌套多行注释和文档注释

多行注释和文档注释的区别:

​ 1.文档注释在使用工具时,在方法的上面会提供方法参数的注释

​ 2.文档注释的内容可以保留在对类生成的API文档中,API文档是一种说明文档

关于编译的一些知识

​ 1、只要是公共类,类名就要和.java文件名完全一样

​ 2、通过javac编译的时候,class文件以类名为单位,意味着.java文件中每有一个类,编译后就会有一个对应 的.class文件

​ 3、一个Java文件可以定义多个类,但是类名不能相同

​ 4、Java命令解释执行:java类名 java命令后面自动匹配class文件,所以可以省略名,因为class文件是以类名为 单位的

​ 5、一个类中不能出现多个主方法

关键字和保留字

关键字:Java关键字是Java语言保留供内部使用的特殊单词,关键字会变色且关键字必 须全部小写

保留字:Java语言保留供内部使用的特殊单词,但现在还没有被使用(goto、const)

注意:关键字和保留字都不能被使用

标识符

标识符:就是给类、接口、方法、变量等起名字的字符序列,一切起名字的地方的这 个名字就是标识符

标识符的命名规则:只能有字母、数字、下划线、美元符号任意组合而成,且不能是 数字开头,严格区分大小写。关键字和保留字不能作为关键字。命名规则必须遵守, 不遵守就会犯错

标识符的命名规范:应当遵守,但不遵守不会报错

​ 1、见名知意

​ 2、驼峰命名原则:包(文件夹)全部小写,层级之间用 . 连接,类名|接口名每个单词抽字母大写,方法名|变 量名第一个单词全部小写,第二个单词首字母大写,常量名全部大写,每个单词之间用_连 接

变量

变量:可变的量,相当于造盒子,指的是一个块空间,作用就是为了存储数据。空间 是变量,空间中的数据是变量值,空间名是变量名

​ 注意:变量可以赋值为一个数据值,可以赋值为一个表达式,但是都是最终得到一个结果数据才能赋值给变量!

定义变量:分为两种方式:

​ 声明的同时直接赋值:数据类型 变量名 = 赋值;

​ 先声明后赋值:数据类型 变量名;

​ 变量名 = 赋值;

变量的作用域:从变量的声明开始,到包含它离它最近的}结束,一个{}自成一个作用 域

​ 注意:在同一作用域范围内,变量名不能重复,变量的值一旦修改不可恢复

变量分类:变量分为局部变量和成员变量

局部变量:在方法|语句块中定义的变量就为局部变量,在使用之前必须已经声明且赋值,在Java 中局部变量没有默认值
成员变量:定义在类中方法外,成员变量有默认值:int 0;字符 ‘’;double 0.0;字符串 null; 布尔 false

数据类型:四类八种

基本数据类型

​ 整形:byte 字节型 8位 [-128,127] short 短整型 16位 [-32768,+32767]

​ int 整形 32位 ±21亿 long 长整型 最大

​ 注意:在java种整数的字面常量值默认为 int 类型 需要在long类型的数字后加l|L

​ 浮点型:float 单精度 小数点后7位 double 双精度 小数点后15位

​ 浮点类型运算可能不精确

​ 字符型:char 字符型 通过 ’ '包含的有且仅有一个的字符或0~65535之间的整数(来自unicode)

​ 布尔型:boolean true|false

引用数据类型:类、接口、数组

数据类型的转换

		自动类型提升
		从小->大
	
	强制类型转换
		从大->小
		小范围类型 变量名 = (小范围类型)大范围类型数据;
		
注意: 
	常数默认为int型,小数默认为double
	=是自右向左运算的符号
	如果运算时,存在多种类型的数据参与运算,最终的结果类型提升为参与运算中最大的类型,如果最大类型<int类型,结果自动提升成为int
	char类型参与运算,先转为十进制的整数,再运算
		
	byte ->short -> char -> int ->long -> float ->double
/*
float的表示范围比int大的原因:float和int都是固定长度的,4字节(32位机子)
int是精确的,超出范围就溢出了。数据错误了。
而float并不是单纯的101010这样存储,是把4个字节划分为
符号位,指数位,尾数位 比如1.123123*10^35;
3个部分固定的,因为有指数,存储的范围当然比int大了

IEEE754(https://blog.csdn.net/C2681595858/article/details/84865920)
晚上自己写一下float在IEEE754中的规则
*/
public class DataType{
	public static void main(String[] args){
		//自动类型提升
		byte b = 100;
		short s = b;
		System.out.println("自动类型提升" + b);
		
		//强制类型转换
		int i = (int)100L;
		System.out.println("强制类型转换" + i);
		
		
		//在常量后加f可以让Java将其识别为float型
		//小数常量默认为double型,需要强制转型为double
		float f = 1.5f;
		System.out.println("float型" + f);
		float f2 = (float)1.5;
		System.out.println("强制转double型" + f2);
		//取整
		int i2 = (int)f;
		System.out.println("取整" + i2);
		
		//先运算,再强转,最后再赋值
		/*如果运算时存在多种类型的数据参与运算,最终的结果类型提升为参与运算中最大的类型,如果最大类型小于
		int型,会将其自动提升至int型
		*/
		short s3 = (short)(b+s);
		
		//char 
		char ch = 'a'; 
		System.out.println("输出字符" + ch); //这时输出的是 a
		//char类型参与运算,先转为十进制的整数(数值参考unicode),再运算
		System.out.println("输出char字符a+1的运算结果" + (ch+1));
		//char+int = int = 98 ,ch2为字符类型,值为98的字符为b,所以输出b
		char ch2 = 'a'+1;
		System.out.println(ch2);
		
		//强转
		//ch+1运算要将ch化为十进制数-->a+1 = 97+1 = 98,因为1是int型,char+int = int型,所以需要强制转型
		char ch3 =(char)(ch+1);
		System.out.println(ch3);
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APiZjxjs-1616506195671)(C:\Users\m1827\AppData\Roaming\Typora\typora-user-images\image-20210323201918265.png)]

疑问:为什么float和int都用32位表示为什么float表示的范围比int大?

答案:由于float型在计算机中使用IEEE754规则机算的,在此规则下,32位的float被分为三部分:1位符号位,8位指数位,23位尾数位,由于8位指数位的原因,指数的取值范围为-128到127,远远大于int的2^32。关于补码,移码,原码,反码还要多多复习,好久不看就忘了

随机数:利用Java提供的Math数学类生成随机数

​ 1、Math.random()会生成[0.0,1.0)之间的随机double型小数

​ 2、生成整数[min,max]之间的随机数的公式为:

min,max(Math.random()*(max-min+1)+min)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值