数据类型转换
上次学习了变量与常量,他们的作用就是用来传递数据的,那么接下来进一步学习变量的问题。自动转换
不同的变量类型可以存储不同类型的数据,当进行变量间的运算的时候,就要考虑一个类型是否匹配问题。比如数字1和字符‘a’在进行加减等数学运算的时候,是由一个类型的转换问题。因为数字与字符相加是没有意义的。
所以这里就有一个类型转换的问题,JAVA由自动转换机制,是根据取值范围自动提升为范围较大的类型。这么做是为了避免内存溢出,范围小的变量运算时自动将内存所占字节数进行补充到与大范围类型相同。
转换规则如下:
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
简单来说,就是哪怕不同类型的变量也能进行运算,只是通过转换机制转换为同一种类型,这样就可以进行计算了。比如'a'转换为int类型的对用的ascii码值再进行计算的。
int i = 1;
byte b = 2;
System.out.println(i+b);
char c = 'a';
System.out.println(i+c);
输出结果:3 98强制转换机制
数据类型 变量名 = (数据类型)被转数据值;
可以通过自己手动将某个类型强制性转换为指定的类型,比如浮点数与整数之间的转换,根据需求不同进行转换。但是要注意一个潜在风险就是,强制转换的时候会有精度的损失。ASCII 编码表
就是一个将人类的文字与十进制数进行对应起来的一个表格,常用几个如下:
运算符算术运算符
稍微特殊一点的就是++和--,除了其本身自增自减的运算外,在赋值时候有一个先后运算问题:
int b = a++; //表示先把a赋值给b,在对a自增1
int b = --a;//表示先对a自减1,再把结果赋值给b赋值运算符
是把右边的值,赋值给左边的变量。比较运算符
就是左右两侧比较大小、是否等值的问题,返回结果是布尔值true或者false。逻辑运算符
用于连接两个布尔型结果的运算符,运算结果都是布尔值true或者false。三元运算符
数据类型 变量名 = 布尔类型表达式?结果1:结果2
一个简化的if判断,如果结果是true,则把结果1赋值给变量,如果是false,则把结果2赋值给变量。
public static void main(String[] args) {
int i = (1==2 ? 100 : 200);
System.out.println(i);//200 int j = (3<=4 ? 500 : 600);
System.out.println(j);//500}
函数入门
也可以叫方法,处理问题的语句都在函数内。在数学中,函数是一种变量的映射关系,在JAVA中,也和变量相关,因为运算处理离不开变量,而运算也就是核心功能。
简单来说,函数就是一定功能抽取出来的代码段,有其固定结构,当需要的时候就可以调用,实现代码的复用性,解决一定冗余。函数定义
修饰符 返回值类型 方法名 (参数列表){
代码...
return ;
}
-修饰符:表明函数的类型,public/private/protected/static等
-返回值类型:void、其他非空类型
-方法名:函数的自定义名字,要符合标识符规范,用于调用方法
-参数列表:通过参数实现函数间的通信,在调用函数的时候,可以直接在括号内对应着赋值。
-return:函数执行完毕时,如果返回值类型不为空,则需要返回对应类型的返回值。函数的调用
直接用函数名()来进行调用,练习吐下:
public static void main(String[] args) {
//调用定义的方法operator
operator();
}
//定义方法,方法中定义三元运算符
public static void operator() {
int i = 0;
i = (1==2 ? 100:200);
System.out.println(i); //200
int j = 0 ;
j = (3<=4 ? 500:600); //500
System.out.println(j);
}
注意,方法要在类中方法外,不能在方法中定义方法。
扩展知识点+=符号的扩展
public static void main(String[] args){
short s = 1;
s+=1;
System.out.println(s);
}
+=号带有强制转换的特点,s+=1实际上是s=(short)s+1。常量和变量的运算
public static void main(String[] args){
byte b1=1;
byte b2=2;
byte b3=1 + 2;
byte b4=b1 + b2;
System.out.println(b3);
System.out.println(b4);
}
b3的输出结果没错,b4的输出结果有错。这是因为b3的赋值是用常量进行相加,并且内存范围够用,不会出错。而b4的赋值是用变量,java编译机制会自动把结果当作int类型进行处理,而int类型不能赋值给byte类型,这里就会出错。