Day_02 数据类型、变量、操作符
1.数据类型
1.1分类
数据分为基本类型(数值型,字符型和布尔型)和引用类型(类,数组和接口)
基本类型
整数型 byte 8位
short 16位 -32768~32767
int 32位 最大是2147483647
long 64位
浮点型 float 32位
double 64位
布尔型 boolean 8位
字符型 char 16位 0~65535 没有负数
1.2整型案例
使用int创建一个32位大小的空间,并取名为i1,把10放入(注意:同域中不能有相同的名字)
int i1=10;
向控制台打印数据,根据名字找到对应的值
System.out.println(i1);
在java中整型默认是int类型,小数默认是double类型
定义long时要在值后面加上L或l,建议使用L:否则l和1不好区分
long L1=7467123648912L;
1.3 浮点型案例
float声明方式,需要在值后面追加F或f
float F1=1.2F;
因为小数默认是double类型,定义double类型可以不加D或d
double D1=1.5;
强制转换为在值的前面加(类型)
float F2=(float)1.23;
1.4 字符型案例
char是字符型,使用’'英文单引号表示,有且只有一个数据
char C1=‘f’;
ASCII
a 97
A 65
0 48
字符型支持Unicode编码 \uxxxx
如果编码和解码不一致,就会出现乱码
转移符,把有意义的字符串转换为无意义的字符,有\表示
可以用\保存一个单引号
char C2='\'';
\r\n换行,\s空格,\t制表符
Unicode编码
char C3='\u4E02';
在\u4e00-\uFA29是汉字
1.5 布尔型案例
java中boolean类型的值只有false和true
1 不能参与任何类型转换
2 主要用于流程控制
3 内存中,占1字节,0000 0000表示false,0000 0001表示true
4 布尔表达式:结果为true/false的运算,比如1小于2 结果为true
1.6 类型转换
boolean不参与转换
低精度到高精度是自动转换,高精度到低精度是强制转换
自动转换类型
byte>short>int>long>float>double>char
强制转换,精度一定会丢失,数据可能出错,删除高位
1.7 混合运算
混合运算,结果的类型为运算中最大的数据类型
int result=10/3+‘c’;
结果为102
混合运算中,byte,short,int,char四种中,任意一种或多种进行运算结果都为int
byte b1=1;
byte b2=2;
short s1=1;
charc1='a';
int result1=b1+b2+s1+c1;
result1的结果是int型
小数问题,不要使用小数做判断
double d1=0.1+0.2;
System. outprintln(d1);
结果为0.30000000000000004
2. 变量和常量
2.1 常量/字面量/直接量
常量:在整个程序的生命周期中,值不可更改(从运行到结束)
1final修饰的变量 final inti=2;
2字面量也是常量,又叫直接量,比如直接打印System.out.println(123)
2.2 变量
变量:有名字的内存空间,可以通过名字找到它,更改它,访问它
变量目的:通过名字即可找到,操作方便,可以重复使用
变量声明:两步数据类型变量名;
变量定义:三步数据类型变量名=值;
变量的分类:
局部变量:方法中声明的变量
静态成员变量:类体中使用static声明的变量
成员变量:类体中没有static声明的变量
2.3 命名规则
强制 : 大小写字母,数字,下划线,美元符号,数字不能开头,不能使用关键字和保留字
非强制 : 驼峰命名法,望文知义
文件名,变量名,方法名,类名,包名(文件夹名) 一切需要我们命名的地方,都要符合这个规则
2.4 作用域
一个就可以理解为一个独立的作用域
变量向上找第一个包含它的大括号就是它的作用域
2.5 静态变量
静态变量:类体中,方法外用static修饰的变量是静态变量
有默认值,可以和局部变量同名
整型:0,浮点:0.0,布尔型:false,字符型:\u0000
调用静态变量:变量所在的类名.静态变量名,如果调用当前类中的静态变量,类名可以省略
如果和局部变量同名,则在该方法中,局部变量优先级高于静态/成员变量
3. 操作符
3.1 算符运算符
+ , - , * , / , %
++ , – 优先级 大于加减乘除
单目 > 双目 > 三目
3.2 位运算符
位运算符:
&位与,两把都为true,结果才是true
|位或,一边为true,结果就是true
!位非,取反,真就是假,假就是真A位异或,两边不一样就是true
&&短路与,且
||短路或
按位非,比如0,二进制是000000000之后就是11111111(补码)11111110(-1反码)10000001(取反源码)
>>右移运算(考虑符号位,符号位不变)8>>3,最右边删除以为,最左边补符号位(正数补0,负数补1)
8/2^3
<<左移运算(考虑符号位,符号位不变),同上,8<<3=8*23
>>>:右移运算(不考虑符号位),正数和>>一样,负数也是最左边补0(不考虑符号位)
3.3 关系运算符
关系运算符,返回都是boolean(true/false)
>,<,>=,<=, = =, !=
==:基本类型 比较值,引用类型 比较地址
3.4 赋值运算符
=:右边的赋值给左边
+=:左边和右边相加,再赋值给左边
/=:左边除以右边,结果赋值给左边
-=、*=、%=同理
i++;等价于i=i+1;
i+=2;等价于i=i+2;
虽然是等价关系,但是++和+=这些会进行自动强制类型转换,比如i是byte类型,则i+1结果为int类型,i=i+h需要强制类型转换
而++和+=就不需要强制类型转换,教据该出错还是出错,就等于帮我们自动强制转换了而已
3.5 字符串拼接符
字符串拼接符:+,用于把多个字符串拼接成一个字符串
只要左右有一个字符串,则+就是字符串连接符
若两边都是数字,则+为加和运算
3.6 三目运算符/三元运算符
三目运算符又叫三元运算符
语法:boolean表达式?真语句:假语句;
boolean表达式:运算结果为boolean类型即可
3.7 优先级
4. 流程控制
4.1 顺序结构
正常编码,从上往下,从左到右执行即可
4.2 分支结构
根据业务逻辑,某些代码在某种情况下执行
或者是根据不同的情况执行不同的代码
技术栈 : if…else … switch
4.2.1 If
4.2.1.1 单分支
单分支:
有不执行情况,比如boolean表达式为false
if(boolean表达式){
java代码;
}
4.2.1.2 双分支
双分支,有且只有一个分支执行
if(boolean表达式){
为真的代码;
}else{
为假的代码;
}
4.2.1.3 多分支
多分支:只会有一条分支执行,有一条执行之后,整个分支结束
1有不执行情况
if(boolean表达式){
真语句;
}else if(boolean表达式){
真语句;
}else if(………){
真语句;
}
2没有不执行情况
if(boolean表达式){
真语句;
}else if(boolean表达式){
真语句;
}else if(...…){
}else{
}
4.2.1.4 特殊情况