1. 变量 [变量的定义=重点]
① 概念:计算中一块内存空间,是数据存储的单元.[理解]
② 组成:数据类型 变量名 数据.
③ 声明:指定变量的数据类型和变量名:
数据类型 变量名;
赋值:通过变量名对变量进行赋值:
变量名=值;
④ 其他的定义语法:
a. 声明的同时赋值:
数据类型 变量名=值; //int a=12;
b. 同时声明多个相同数据类型的变量:
数据类型 变量名1,变量名2=值,变量名;
//int a,b=12,c=13,d;
2. 数据类型[重点]
① 基本数据类型(原始数据类型/简单数据类型):8种
整数类型: byte 1B -128~127
short 2B
int 4B
long 8B
注意:long字面值后面需要加L或是l(建议用L).
字面值:程序中可以给一个数据类型的变量赋的值.
小数类型:(浮点类型):
单精度浮点数: float 4B 7位精确位
注意:字面值后面必须加F或是f.
双精度浮点数: double 8B 16位精确位
注意:字面值需要加D或是d,也可以不加.
浮点数采用科学计数法存储,存数的是近似值
字符类型: char 2B 采用Unicode编码(十六进制)->万国码
字面值: a.以''引起来的单个字符 例如:char c= 'A';
char c4='中';
b.以整数的形式存储:
char c2=65;
c.以uncode编码形式存储:
char c3='\u0041';
转义字符:
① \' :单引号
② \" : 双引号
③ \\ : 反斜杠
④ \n : 换行
⑤ \t : 水平跳格
注意:以上符号都是英文符号.
布尔类型: boolean 字面值:只有 true 和 false
② 引用数据类型(对象数据类型):
类/数组/接口等都是对象数据类型.
String :字符串,用""引起来一个或是多个字符.
3. 数据类型转换[重点]
① 自动类型提升:
a. 数据类型相互兼容
b. 目标类型 大于 源数据类型:
源数据类型 变量名1=值;
目标数据类型 变量名2=变量名1;
两个数据类型的变量相互赋值的规则:
I. byte--->short--->int--->long--->float--->double
II.char--->int--->long--->float--->double
int i=10;
long l=i;
面试题目:
① char c3=65; ② int a2=65;
正确 char c4=a2; //编译报错
② 强制类型转换
a.数据类型相互兼容
b.目标类型小于源数据类型(目标类型的数据存储范围小于源类型):
源数据类型 变量名1=值;
目标数据类型 变量名2=(目标数据类型)变量名1;
c. 强转的结果:
I. 数据合适,数据完整: int i=12;
byte b=(byte)i;//12
II. 整数不合适,数据被截断: int i=257;
byte b=(byte)i;//1
III. 小数强转为整数,数据被截断(精度丢失)
double d=12.8;
int i=(int)d;//12
IV. 布尔类型的数据不参与强转
③ 当两个数值或是变量参与运算时,如果两个变量的数据类型不一致,
转换规则如下:
a. 如果有一个double,结果就是double;
b. 如果没有double,有一个是float,结果就是float;
c. 如果没有double,float,有一个是long ,结果就是long;
d. 其余的情况(没有double/float/long),结果都是int 类型.
4. 表达式:由变量/字面值/运算符组成的一个式子,会有结果产生. [理解即可]
5. 运算符:
① 算数运算符:+ - *(乘法) /(除法) %(取模/取余数)
注意:参与运算的数值或是变量,+两端如果有一个是String类型,
表达式的结果一定是String类型.
② 赋值运算符: = += -= *= /= %=
注意:+=不存在自动类型提升.
③ ++(自加) --(自减) --->一元运算符 (开发重点是a++的应用)
a++:先使用a原有的数据,再将a加1. (面试难点,不是开发重点)
++a:先将a加1,再使用a的数据.
④ 关系运算符
== : 等于
> : 大于
>= : 大于等于
< : 小于
<= : 小于等于
!= : 不等于
注意:用关系运算符连接的表达式结果是true或是false,所以这类的
表达式称为布尔表达式.
⑤ 逻辑运算符
&& : 逻辑与,只有当两边的布尔表达式结果都是true,结果才为true.
如果有一个结果false,表达式的额结果就是false.
|| : 逻辑或,两边有一个结果为true,表达式的结果就是true, 只有当两边同时为false,表达式的结果才为false.!!
! : 逻辑非,对布尔表达式的结果取反.
面试题目:
&&和&的比较?
&&:短路运算符,逻辑与.
&: 非短路运算符,与.
|| 和 | 的比较?
⑥ 条件运算符(三目运算符)(了解)
布尔表达式 ? 表达式1:表达式2;
执行原理:如果布尔表达式的结果为true,执行表达式1,否则执行表达式2.
面试题目:
① byte b1=3;
b1=b1+1;
System.out.println(b1);
分析以上代码编译是否通过?解释原因或是给出结果.
编译不通过.b1+1结果类型是int类型
② byte b2=3;
b2+=1;
System.out.println(b2);
分析以上代码编译是否通过?解释原因或是给出结果.
编译通过,4. +=没有自动类型提升
① 概念:计算中一块内存空间,是数据存储的单元.[理解]
② 组成:数据类型 变量名 数据.
③ 声明:指定变量的数据类型和变量名:
数据类型 变量名;
赋值:通过变量名对变量进行赋值:
变量名=值;
④ 其他的定义语法:
a. 声明的同时赋值:
数据类型 变量名=值; //int a=12;
b. 同时声明多个相同数据类型的变量:
数据类型 变量名1,变量名2=值,变量名;
//int a,b=12,c=13,d;
2. 数据类型[重点]
① 基本数据类型(原始数据类型/简单数据类型):8种
整数类型: byte 1B -128~127
short 2B
int 4B
long 8B
注意:long字面值后面需要加L或是l(建议用L).
字面值:程序中可以给一个数据类型的变量赋的值.
小数类型:(浮点类型):
单精度浮点数: float 4B 7位精确位
注意:字面值后面必须加F或是f.
双精度浮点数: double 8B 16位精确位
注意:字面值需要加D或是d,也可以不加.
浮点数采用科学计数法存储,存数的是近似值
字符类型: char 2B 采用Unicode编码(十六进制)->万国码
字面值: a.以''引起来的单个字符 例如:char c= 'A';
char c4='中';
b.以整数的形式存储:
char c2=65;
c.以uncode编码形式存储:
char c3='\u0041';
转义字符:
① \' :单引号
② \" : 双引号
③ \\ : 反斜杠
④ \n : 换行
⑤ \t : 水平跳格
注意:以上符号都是英文符号.
布尔类型: boolean 字面值:只有 true 和 false
② 引用数据类型(对象数据类型):
类/数组/接口等都是对象数据类型.
String :字符串,用""引起来一个或是多个字符.
3. 数据类型转换[重点]
① 自动类型提升:
a. 数据类型相互兼容
b. 目标类型 大于 源数据类型:
源数据类型 变量名1=值;
目标数据类型 变量名2=变量名1;
两个数据类型的变量相互赋值的规则:
I. byte--->short--->int--->long--->float--->double
II.char--->int--->long--->float--->double
int i=10;
long l=i;
面试题目:
① char c3=65; ② int a2=65;
正确 char c4=a2; //编译报错
② 强制类型转换
a.数据类型相互兼容
b.目标类型小于源数据类型(目标类型的数据存储范围小于源类型):
源数据类型 变量名1=值;
目标数据类型 变量名2=(目标数据类型)变量名1;
c. 强转的结果:
I. 数据合适,数据完整: int i=12;
byte b=(byte)i;//12
II. 整数不合适,数据被截断: int i=257;
byte b=(byte)i;//1
III. 小数强转为整数,数据被截断(精度丢失)
double d=12.8;
int i=(int)d;//12
IV. 布尔类型的数据不参与强转
③ 当两个数值或是变量参与运算时,如果两个变量的数据类型不一致,
转换规则如下:
a. 如果有一个double,结果就是double;
b. 如果没有double,有一个是float,结果就是float;
c. 如果没有double,float,有一个是long ,结果就是long;
d. 其余的情况(没有double/float/long),结果都是int 类型.
4. 表达式:由变量/字面值/运算符组成的一个式子,会有结果产生. [理解即可]
5. 运算符:
① 算数运算符:+ - *(乘法) /(除法) %(取模/取余数)
注意:参与运算的数值或是变量,+两端如果有一个是String类型,
表达式的结果一定是String类型.
② 赋值运算符: = += -= *= /= %=
注意:+=不存在自动类型提升.
③ ++(自加) --(自减) --->一元运算符 (开发重点是a++的应用)
a++:先使用a原有的数据,再将a加1. (面试难点,不是开发重点)
++a:先将a加1,再使用a的数据.
④ 关系运算符
== : 等于
> : 大于
>= : 大于等于
< : 小于
<= : 小于等于
!= : 不等于
注意:用关系运算符连接的表达式结果是true或是false,所以这类的
表达式称为布尔表达式.
⑤ 逻辑运算符
&& : 逻辑与,只有当两边的布尔表达式结果都是true,结果才为true.
如果有一个结果false,表达式的额结果就是false.
|| : 逻辑或,两边有一个结果为true,表达式的结果就是true, 只有当两边同时为false,表达式的结果才为false.!!
! : 逻辑非,对布尔表达式的结果取反.
面试题目:
&&和&的比较?
&&:短路运算符,逻辑与.
&: 非短路运算符,与.
|| 和 | 的比较?
⑥ 条件运算符(三目运算符)(了解)
布尔表达式 ? 表达式1:表达式2;
执行原理:如果布尔表达式的结果为true,执行表达式1,否则执行表达式2.
面试题目:
① byte b1=3;
b1=b1+1;
System.out.println(b1);
分析以上代码编译是否通过?解释原因或是给出结果.
编译不通过.b1+1结果类型是int类型
② byte b2=3;
b2+=1;
System.out.println(b2);
分析以上代码编译是否通过?解释原因或是给出结果.
编译通过,4. +=没有自动类型提升