Java学习回忆录-基础语法-003

Java学习回忆录-基础语法-003

数据类型

计算机存储单位

java的数据类型两大类:基本数据类型,引用数据类型

数据类型:整型(常见的) 数值大小
byte 1字节 (-128 ~ 127)
short 2字节
int 4字节
long 8字节
数据类型:浮点型 数值大小
float 单精度浮点数(4个字节),只能表示6~7位
double 双精度浮点数(8个字节),可以表示14位左右的小数点.
其他类型
布尔型:boolean 只有两个值 true false 表示事物正反两面,一个字节
引用数据类型 数组、类、接口、对象…
字符型:char 表示符号,单符号 、一对 ‘’ 表示、‘a’ ‘中’ ‘0’ 、2个字节
计算机底层: 就是电路,一个电路通过电压的高和低(通电和断电) 可以表示两种状态. 表示0和1. 
	计算机最小单位: 
	    比特(bit)
		单位太小. 人们通常将8bit提升为一个字节 byte . 
		1byte=8bit . 

	计算机的基本单位
		字节(byte)
	常见单位有:kb mb gb tb  
	1kb=1024byte  2次方. 
	
java 是强类型语言. 
	对于不同类型的数据定义了相对的类型, 这些不同的数据类型,在内存中占用的空间也是不同的... 
  1. 常量

    固定的值。

    常量定义格式:

    final 数据类型 常量名 = 值;

    字符常量:’ ’ 引起来的值
    字符串常量:" " 引起来的值
    整数常量:类似124这种数字,默认是int . 123 默认在程序中是4个字节.
    长整数:在数字后面加上L表示长整数(L可以大写也可以小写,但是不建议使用小写),12345678901L 整数值.
    浮点数常量:默认double 类型.如果需要表示单精度浮点数. 在数值后添加F(f)
    null:表示空值,即表示内存中没有开辟空间.

  2. 变量

    注意:整型变量默认的是int型,浮点型变量默认的是double型;
    变量就是内存中一块有名字的空间,一次可以存储一个数据,通过名字可以访问(取值,赋值)。
    ​ 变量的格式
    ​ 数据类型 变量名 = 数值;
    ​ 数据类型: java可以根据数据类型,确定内存空间的大小
    ​ 变量名: 为了能够方便定位到这块内存.
    ​ 数值: 存储的具体的值
    ​ 注意:
    ​ 变量定义语句的读法:
    ​ 数据类型 变量名 = 数值
    ​ 将数值,赋值给了数据类型的变量名 .
    ​ e.g: int age=1;
    ​ 通俗理解, 就是数值1, 存储到了变量age 中.

- 关于如何起一个好的变名
			1.要符合标识符的规则(不能出错)
			2. 要有意义,可读.
			3. 命名规范
				一个单词,全小写.
				多个单词,第二个单词起,首字母大写... 
理解变量:
    存储和空间的思想. 
    一块有名字的内存, 一次可以存储一个数据. 通过变量名就可以使用这个数, 并且还可以修改. 
    int a=1; 
    a=2;  //将2值赋值给了变量a . 
当给整型变量long型赋值时,如果赋予的数值超过了int型的区间,则需要在数值后面加上L;
当给浮点型变量float型赋值时,后面的浮点数默认是double型,所以必须在数值后面加上F

自动类型提升

可以将较小的数据类型的变量赋值给较大的数据类型的变量。

整数和浮点数,在底层存储数据的方式不同,导致float 表示的数据更多更大…所以8个字节的long型变量就可以自动提升为4个字节的float变量

​ byte->short->int ->long ->float->double

​ char ->int ->long ->float->double

注意 char 类型不能转换成short类型

自我理解:short 和 char类型虽然都是两个字节,但是char是无符号的,没有负数,而short是有符号的,存在负数,所以char不能自动提升为short。(理解可能有误)
主要原因: char 和 short 在 计算机中存储的方式不同,就像 int 和 float 一样。

byte short char 在运算的时候会自动提升为int .

​ byte b1=1,b2=2,b3; //b3=b1+b2; b1+b2时,已经提升为了int了. 注意.

强制类型转换

格式:目标数据类型  变量名=(目标数据类型)源数据;
例如: 
    int ->byte 
    int ->char 
    double ->int 
应用场景
	整数里边较大的数据类型赋值给较小的. 
	int ->byte 
    浮点数转整数
    float->int 
    double ->int 
    3.14->3 
    整数转字符
    int ->char 
    97 ->'a'
    byte b1=1,b2=2,b3; 正确的写法:b3=(byte)(b1+b2); b1+b2时,

注意只有在进行运算的时候才会有数据类型的提升,以下的情况是不行的
	b3 = (byte)b1 + (byte)b2;
这个是错误的,因为 b1 和 b2 都是 byte 类型,所以在运算前的强转是没有作用的,当强转完执行 + 运算的时候,数据类型还是会提升为 int 型,

精度丢失问题

byte b1 = 3*;* byte b2 = 4*;* byte b3 = b1 + b2; // 这里会报错

  1. byte和byte(或者short,char)进行运算的时候会提升为int型,两个int型相加时也为int型
  2. b1和b2是变量,变量存储的值是变化的,在编译的时候无法判断里面的值,相加可能会超出byte的取值范围

但是

byte b3 = 3 + 4*;*

这是可以的,因为,Java有常量优化机制,当编译的时候会先把3+4=7,然后判断7 < 127 ,没有问题,就会赋值过去,没有警告。
变量名标签
变量注意点

猜你喜欢

转载自blog.csdn.net/xxydzyr/article/details/86769976