数据类型转换
分为自动类型转换和强制类型转换
自动转换:将取值范围小的类型自动提升为取值范围大的类型
public static void main(String[] args){
int i = 1;
byte j = 2;
//byte x = i + j ;//报错
//intl类型和byte类型运算,结果是int类型
int y = i + j ;
System.out.println(y);
}
同样道理,当一个int变量和一个double变量运算时,int类型将自动提升成double类型进行运算
转换规则:
范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为int转换
强制转换:将取值范围大的类型强制转换成取值范围小的类型
转换格式:数据类型 变量名 = (数据类型) 被装数据值
public static void main(String[] args){
//doube 类型数据强制转换成int类型,直接去掉小数点。
int i = (int) 1.5;
System.out.println(i);
}
同样的道理,当一个short 类型与1相加,我们可以很清楚的知道数据类型提升了,但是还是想把结果赋值给short变量。这就需要强制转换。
public static void main(String[] args){
//short类型变量,内存中2个字节
short a = 1;
/*
出现编译失败
a 和1 做运算时,1是int类型,a会被提升成int类型
a + 1 后的结果是int类型,将结果赋值给short类型时发生错误
short内存2个字节,int类型4个字节
必须将int强制转换成short才能完成赋值
*/
s = s + 1;// 编译失败
s = (short)(s + 1);// 编译成功
}
强烈注意
- 浮点转成整数,直接取消小数点,可能造成数据精度损失
- int强制转换成short 砍掉两个字节,可能造成数据丢失
//定义S为short范围内最大值
short s = 32767;
//运算后,强制转换,砍掉两个字节后会出现不确定的结果
s = (short)( s + 10);
ASCII编码表
编码表:就是将人类的文字与一个十进制数进行对应起来组成的一张表格。
字符 | 数值 |
0 | 48 |
9 | 57 |
A | 65 |
Z | 90 |
a | 97 |
z | 122 |
运算符
一般有算数运算符、赋值运算符、比较运算符、逻辑运算符、三元运算符
算术运算符
算术运算符包括 | |
+ | 加法运算,字符串连接运算 |
- | 减法运算符 |
* | 乘法运算符 |
/ | 除法运算符 |
% | 取模运算,两个数字相除取余数 |
++ 、 -- | 自增自减运算 |
- ++运算,变量自己增长1,反之,--运算,变量自己减少1,用法与++一致
独立运算:
- 前++和后++,前--和后--,没有什么区别
- 变量前++;例如: ++i
- 变量后++;例如: i++
混合运算 :
- 和其他变量放在一起,前++和后++就产生了不同
- 变量前++:变量a自己先加1,将加1后的结果赋值给b
- 变量后++:变量a把自己的值先加1,然后赋值给b
- +符号在字符串中的操作: +符号在遇到字符串的时候,表示连接、拼接的含义。例如,"a"+"b"的结果为"ab"
赋值运算符
赋值运算符包括 | |
== | 等于号 |
+=(带有强制转换) | 加等于 |
-= | 减等于 |
*= | 乘等于 |
/= | 除等于 |
%= | 取模等 |
就是将符号右边的值赋给左边的值
比较运算符
比较运算符包括 | |
== | 比较符号两边数据是否相等,相等结果为true |
> | 比较符号左边的数据是否大于右边的数据,如果大于结果为true |
< | 比较符号左边的数据是否小于右边的数据,如果小于结果为true |
<= | 比较符号左边的数据是否小于或等于右边的数据,如果满足结果为true |
>= | 比较符号左边的数据是否大于或等于右边的数据,如果满足结果为true |
!== | 不等于符号,如果符号两边的数据不相等,结果为true |
是两个数据之间进行比较的运算,运算结果都是布尔值 true或false
逻辑运算符
逻辑运算符包括 | |
&& 与(短路) | 两边都输true,结果为true 一边是false,结果为false 短路特点:符号左边为false,右边不再计算 |
| | 或(短路) | 两边都输false,结果为false 一边是true,结果为true 短路特点:符号左边为true,右边不再计算 |
! 取反 | !true结果是false !false结果是true |
是用来连接两个布尔类型结果的运算符,运算结果都是布尔值true或false
三元运算符
格式:数据类型 变量名 = 布尔类型表达式 ? 结果1 :结果2
方法入门
方法: 就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用,这样既实现了代码的复用性,也解决了代码冗余的现象
定义格式:
修饰符 返回值类型 方法名 (参数类型){
代码.....
return
}
定义格式说明:
- 修饰符 : 当前固定写法为public static
- 返回值类型 :要对应所要输出的数据的类型
- 方法名:自己定义的名字,满足标识符规范,用来调节方法
- 参数列表:传递给调用函数的变量的声明
- return : 方法结束,若返回值类型为void,则方法大括号里的return可以不写
方法的调用
方法在定义完毕后,方法不会自己运行,必须被调用才能执行。我们可以在主方法main中来调用我们自己定义的方法,在主方法中,直接写要调用的方法名字即可
public static void main(){
//调用定义的方法method
method();
}
// 定义方法,被main调用
public static void method (){
System.out.println("自己定义的方法,需要被main调用运行");
}
调用练习
将三元运算符代码抽取到自定义的方法中,并调用
public static void main(String[] args){
//调用定义的方法operator
operator();
}
// 定义方法,方法中定义三元运算符
public static void operator(){
int i =0;
i = (i == 2 ? 100 :200);
System.out.println();
int j = 0;
j = (3 <= 4 ? 500 : 600);
System.out.println();
}
注意事项
方法定义注意事项:
- 方法必须定义在——类中方法体外
- 方法不能定义在另一个方法的里面
public class Demo{
public static void main (String[] args){
}
//正确方法,类中,main方法外面可以定义方法
public static void method(){}
}
=====================================================
public class Demo{
public static void main (String[] args){
//错误写法,一个方法不能定义在另一个方法内部
public static void method (){}
}
}