入门Day3
类型转换
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
运算中,不同类型数据先转换为统一类型,然后进行运算
强制类型转换和自动类型转换
public class demo03 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;//内存溢出
//强制转换 (类型)变量名 高--低
//自动转换 低--高
System.out.println(i);
System.out.println(b);
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换位不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换时可能出现内存溢出问题,或是精度问题
*/
System.out.println((int)23.78);
System.out.println((int)100.7);
System.out.println("============================");
//强制转换
char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char)d);
}
}
注意问题:
public class demo04 {
public static void main(String[] args) {
//操作较大的数时,注意溢出问题
int money = 10_1010_1010;//数字之间可以用下划线分割
int years = 20;
int total = money*years;
long total1 = money*years;//默认是int,,转换之前就存在问题
long total3 = money*(long)years;
System.out.println(total);//-1272816280,结果溢出
System.out.println(total1);//-1272816280,结果依然溢出
System.out.println(total3);
}
}
变量
-
变量是什么:可以变化的量
-
java是一种强类型语言,每个变量的声明必须声明其类型
-
Java变量是程序中最基本的储存单元,器要数包括变量名,变量类型和作用域。
type varName [=value] [{,varName[=value]}] //数据类型 变量名 = 值;可以使用都好隔开声明多个类型变量
-
注意事项
- 每个变量都有类型,类型可以是基本变量,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结尾
常量
-
常量:初始化后不能再改变值,不会变动的值
-
理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
-
格式
final 常量名=值; final double PI=3.14;
代码:
package base; public class demo07 { //修饰符不分先后顺序 static final double PI = 3.14; public static void main(String[] args) { System.out.println(PI); } }
变量与常量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则
- 方法名:首字母小写和驼峰原则
运算符
java语言支持以下运算符:优先级()
- 算术运算符:+、-、*、/、%、++、–
package operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符 加减乘除
int a = 10;
int c = 20;
System.out.println(a*c);
System.out.println(a+c);
System.out.println(a-c);
System.out.println(a/(double)c);
}
}
=========================================================================================
package operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a = 10;
int b = a++;//a=a+1,执行完这段代码后,先给b赋值,再自增
//a = a+1;
System.out.println(a);
//a = a+1;
int c = ++a;//执行这段代码前,先自增,再给c赋值
int d = a--;
int e = --a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
//幂运算,很多运算都会使用工具类操作
double pow = Math.pow(3,2);//Math类
System.out.println(pow);
}
}
- 赋值运算符:=
- 关系运算符:>、<、>=、<=、==、!=
package operator;
//关系运算符
public class Demo03 {
public static void main(String[] args) {
//关系运算符的返回结果:正确,错误 布尔值
int a= 10;
int b = 20;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
- 逻辑运算符:&&、||、!
package operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and)或(or)非(取反)
boolean a = true;
boolean c = false;
System.out.println("a && c:"+(a && c));//逻辑与运算:两个变量都为真,结果才为true,若第一个为假,则直接返回假,不在进行后面的运算
System.out.println("a || c:"+(a || c));//逻辑或运算:两个变量有有一个为真,则结果才为true
System.out.println("!(a && c):"+(!(a && c)));//如果是真,则变为假,如果是假则变为真
//短路运算
int b = 3;
boolean d = (b<2) && (++b<2);
System.out.println(b);
boolean e = (b>2) && (++b>2);
System.out.println(b);
System.out.println(d);
System.out.println(e);
}
}
- 位运算符:&、|、^、~、<<、>>、>>>
package operator;
//位运算符
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 相同则为1,不同为0
A|B = 0011 1101 不同为1,相同则为0
A^B = 0011 0001
~B = 1111 0010
2*8 = 16 2*2*2*2
<<左移 相当于*2
>>右移 相当于/2
*/
System.out.println(2<<3);//2*2*2*2
}
}
- 条件运算符:?:
package operator;
public class Demo08 {
public static void main(String[] args) {
// x ? y:z
//如果x==true,则结果为y,否则结果为z
int score = 60;
String type = score < 60 ? "不及格":"及格";
System.out.println(type);
}
}
- 扩展赋值运算符:+=、-=、*=、/=