类型转化
- 自动转化
数据类型之间可以自动进行转化。(小类型转化到大类型)
//声明一个byte类型的变量
byte a = 123;
//将byte类型的值a赋值给int类型的变量b
int b = a;
System.out.println(a);
Tips:数据在进行四则运算时,数据类型会自动向大类型靠拢。char>short>int>long>float>double,char类型向int类型靠拢
- 强制类型转化
大类型转化到小类型需要强制转换
//声明一个int类型变量a
int a = 123;
//将变量a存储到byte类型的变量b中。
byte b =(byte) a;
System.out.println(b);
Tips:强制转化会造成数据错误,所以强转有风险,转化需谨慎
常量
i、定义
在程序运行期间其值不会发生改变的量。
ii、why使用?
在软件开发过程中,有一些值时不允许被多次赋值的,对于这些值,我们通常用常量来定义它,防止程序运行期间发生改变。
iii、书写格式
用final修饰的变量就是常量
//定义常量a
final int a = 1;
iv、常量的分类
- 字面常量:看到什么就是什么。
- 字符常量:通过final修饰的变量也叫最终常量。
v、命名规则
通过所有单词的所有字母均大写,单词之间用“_”分割来给常量命名。
运算符
i、分类
- 算术运算符:+ - * / ++ –
- 关系运算符:> < >= <= != == instanceOf
- 逻辑运算符:& | ! ^ && ||
- 赋值运算符:=
- 扩展/拓展运算符: += -= *= /= %= >>= <<= ^= !=
- 位运算符:& | ^ >> << <<< !
- 条件运算符:?:
ii、赋值运算符
将=右边的数的值赋给左边的变量存储
int a = 10;//将10这个值赋给int类型的变量a
iii、算数运算符
- +号
public class Test{
public static void main(String[] args){
int num = +5;//+号当作正号使用
System.out.println(num);
num = 1+2; //+号当作运加法使用
System.out.println(num);
System.out.println("1+1="+1+1);//+号当作连接符使用
}
}
- +号在数字前面编写,代表正号
- 在两个数值之间写代表加法运算
- +号左右两边有字符串类型的操作数时,+号代表连接符
- -号
public class Test{
public static void main(String[] args){
int num = -5;//-号当作负号使用
System.out.println(num);
num = 2-1; //-号当作运减法使用
System.out.println(num);
}
}
- -号在数值前面编写,代表负号
- 在两个数值之间,代表减法运算
- % * /
public class Test{
public static void main(String[] args){
int num = 15;
num = num*2; //乘法运算
System.out.println(num);
num = num/2; //除法运算
System.out.println(num);
num = num%2; //取余运算
System.out.println(num);
}
}
Tips、他们三个只能进行运算
- ++和–的区别和联系
++:是在原来的基础上自增1
–:是在原来的基础上自减1
当++、–作为一条单独语句时,都是单目运算符,在前和在后没有区别。
++num当不是单独一条语句时,先自增,再运算
num++当不是单独一条语句时,先运算,再自增
–num、num–用法相同。
iv、扩展/拓展运算符
实际上就是算数运算符和位运算符+赋值运算符的结合体(+=、-=、*=、/=)
public class Test{
public static void main(String[] args){
int num = 15;
num += 1; //相当于num = num +1;
System.out.println(num);
num -= 1;// 相当于num = num-1;
System.out.println(num);
}
}
-
优缺点
-
优点:
-
提高编写效率
-
提高编译速度
-
自动强制转化(有时候会出现精度问题)
-
-
缺点 :
- 不利于阅读
-
v、关系运算符
public class Test{
public static void main(String[] args){
int a = 1;
int b = 1;
System.out.println(a==b); //true
System.out.println(a>b); //flase
System.out.println(a<b); //flase
System.out.println(a!=b); //flase
}
}
- 注意事项:
- 最后的结果是个boolean值,true或flase。
- !=、==既可以比较基本数据类型也可以比较引用数据类型
- <、>、>=、<=只能比较基本数据类型(boolean类型除外)
vi、逻辑运算符
逻辑运算符中包括(&、|、!、、&&、||),逻辑运算符左右的操作数只能是boolean类型的值,当&、|、两边的操作数不是boolean类型的值时,他们不是逻辑运算符,而是位运算符。
public class Test{
public static void main(String[] args){
System.out.println(ture&ture); //true
System.out.println(ture&flase); //flase
System.out.println(flase&ture); //flase
System.out.println(flase&flase); //flase
System.out.println(ture|ture); //true
System.out.println(flase|ture); //true
System.out.println(ture|flase); //true
System.out.println(flase|flase); //flase
System.out.println(!ture); //flase
System.out.println(!flase); //true
System.out.println(ture^ture); //flase
System.out.println(ture^flase); //true
System.out.println(flase^ture); //true
System.out.println(flase^flase); //flase
System.out.println(ture&&ture); //true
System.out.println(ture&&flase); //flase
System.out.println(flase&&ture); //flase
System.out.println(flase&&flase); //flase
System.out.println(ture||ture); //true
System.out.println(flase||ture); //true
System.out.println(ture||flase); //true
System.out.println(flase||flase); //flase
}
}
- 逻辑运算符运算结果
- &、&&左右两边操作数都为true结果就是true(串联电路)
- |、||左右两边有一个操作数位true结果就是true(并联电路)
- ^两边操作数相同为flase,不同为true
- !取反
Tips:&&运算时,当左边第一个操作数为flase时,就不会再对第二个操作数进行运算,因为结果一定是flase
Tips:||运算时,当左边第一个操作数为true时,就不会在对第二个操作数进行运算,因为结果一定是true