数据类型、变量、运算符
1. 变量:数据类型 变量名;
数据类型 变量名 = 值;
注意:java是强类型的语句,数据存储对应类型变量中
2. 数据类型:
(1) 基本数据类型(简单数据类型/原始数据类型)
(B= Byte字节 KB=1024B MB =1024KB GB=1024MB TB=1024GB)
byte 1B -128~127
short 2B -32768~32767
int 4B
long 8B
float 4B
double 8B
char 2B char c= 'A' char c= '9' char c= 9;(整数形式赋值:0~65535)
boolean true/false
(2) 引用:对象数据(对象类型的变量)
数组、类、集合、接口等都是对象/引用类型
String str="hello"
实际开发常用:整数 int
小数 double
布尔类型通常应用在判断:true代表关系成立;false代表关系不成立
由于Java中的特点为:面向对象,后期会利用包装类将基本数据转换为对应对象类型
3. 类型转换:【面试会涉及】
(1) 自动类型提升
a. 小数据类型给大数据类型赋值,直接赋值即可
b. 自动类型提升规则:
byte->short->int->long->float->double
注意:float和double小数类型,可以采用科学技术法的存储方式
100 = 1*10^2 = 1e2
char->int->long ->float->double
(2) 强制类型转换
a. 大数据类型赋值给小数据类型的变量,需要强制类型转换
b. 语法:
double d = 9.7;
int a = (int)d;
c. 结果:
i. 大类型的变量中存储的数据恰巧在小类型的变量存储范围内,没有溢出
ii. 大类型的变量中存储的数据不在小类型的变量存储范围内,则溢出
4. 运算符
+ - * %
> < >= == ..
+= -=
int a = 1;
a+=1 ; // a=a+1
注意:Java中的+有两种用法:
a. 第一种为:加法运算
b. 第二种为:字符串的拼接
System.out.println(5+6+"hello"); // 11hello
System.out.println("hello"+5+6); // hello56
5. 表达式结果类型:
(1) 如果表达式中有一个类型为double,结果为double
(2) 如果表达式中有一个类型为float,结果为float
(3) 如果表达式中有一个类型为long,结果为long
(4) 其余情况结果类型都为 int类型
byte+byte byte+short short+short
int a = 8;
double d = 8.9;
面试题目:以下代码是否编译通过,通过,运行结果,不同解释原因
(1) byte b = 1;
b = b+1;
System.out.println(b);
编译报错,错误原因:b+1结果类型自动提升为int,存储在byte类型的变量损失精度,编译报错
(2) byte b = 1;
b+=1;
System.out.println(b);
编译通过,运行2,原因:+= 没有自动类型提升
实际底层:b+=1 ; // b+1 ->int,自动强制转为 int->byte (byte)(b+1)