1、基本类型的转换
1.1、自动类型转换
-
当数据类型不一样的时候,将会发生类型换换
-
自动类型转换: (隐式转换)
- 1.特点: 代码不需要进行特殊处理,自动完成
- 2.规则:数据范围从小到大
-
例子:
public class Demo01DateType{ public static void main(String[] args){ System.out.println(1024); System.out.println(3.14); // 左边的是long类型,右边的是int类型 // int类型转为long类型,符合范围从小到大 long num1 = 100; System.out.println(num1); // 左边的double类型, 右边的是float // float转为double类型,符合范围从小到大 double num2 = 2.5F; System.out.println(num2); // 左边的是float类型,右边的是long类型 // long类型数据转为float数据,符合范围从小到大 float num3 = 10L; System.out.println(num3); } }
1.2、强制类型转换
-
强制类型转换
- 1、特点:代码需要进行特殊的格式处理,不能自动完成
- 2、格式:范围小的类型,范围小的类型变量名 = ( 范围小的类型)范围大的类型
-
注意事项:
- 1、强制类型转换一班不推荐使用,因为有可能发生精度损失,数据溢出
- 2、byte/short/char 这三种可以发生数学运算, 进行运算的时候先提升为int类型,在进行计算
- 3、布尔类型不能发生数据类型转换
-
例子
public class DemoDataType{ public static void main(String[] args){ // 左边的是int类型, 右边的是longleix // long ---> int 不是从小到大, 强制转换 // 格式:范围小的类型,范围小的类型变量名 = ( 范围小的类型)范围大的类型 int num = (int)100L; System.out.println(num); // 数据溢出 // long类型转为int类型 int num2 = (int)1000000000000000L; System.out.println(num2); // double转为int类型数据, 强制类型转换 int num3 = (int) 3.5; System.out.println(num3); char zifu1 = 'A'; // 这是一个字符型数据 System.out.println(zifu1+1); // 先将A提升为int类型数据,即阿斯克编码,在进行int类型数据计算 byte num4 = 50; byte num5 = 40; // byte result = num4 + num5; 报错,运算的时候先将byte提升为int类型,然后再计算 int result = num4 + num5; System.out.println(result); // 使用强制类型转换 short result2 = (short) (num4 + num5); System.out.println(result); } }
2、运算符
- 运算符:进行特定操作的符号
- 表达式: 用运算符连接起来的式子
2.1、数学运算符
-
四则运算:加减乘除, 取模(余数) %
-
注意事项:
- 1.一旦运算中有不同类型的数据,那么将会是数据类型大的那种
-
例子
public class DemoPerator{ public static void main(String[] args){ int num1 = 10; int num2 = 20; int result = num1 + num2; System.out.println(result); System.out.println(num2-num1); System.out.println(num2*num1); System.out.println(num2/num1); } }
-
四则运算中的 + 用法
-
对于数值来讲,那就是直接相加
-
对于字符来讲,char类型字符,向将字符提升为int类型,在进行计算
-
对于字符串来讲,就是拼接字符串操作
-
任何数据和字符串相加都是字符串
public class Demo{ public static void main(String[] args){ int a=10; int b=12; System.out.println(a+b); String str; str = "hello world"; System.out.println(str+5); char zifu = 'a'; System.out.println(zifu + 10); } }
-
2.2、自增,自减运算符
-
含义:让一个变量增减一个数字
-
使用格式: 写在变量名称前面或者写在变量名称后面;num++,++num
-
使用方式:
- 单独使用:不和其他的运算操作,自己就是一个步骤
- 混合使用:和其他操作一起使用,比如for循环
-
使用区别:
- 在单独使用的时候,前和后没有区别
- 混合使用的时候有本质的区别:
- 如果是前++, 这个变量立刻马上加1, 然后拿着结果进行使用 先加后用
- 如果是后++,那么首先使用变量本来的值,然后变量+1, 先用后加
-
注意事项:只用变量才能使用自增自减,常量不可以使用,常量不可变
public class Perator{ public static void main(String[] args){ int num = 10; System.out.println("未使用前++的值"+num); ++num; System.out.println("使用前++的值是"+num); int num2 = 20; System.out.println("未使用后++的值"+num); num2++; System.out.println("使用后++的值是"+num); System.out.println("联合使用"); int num3 = 30; System.out.println(++num3); System.out.println(num3); // 先加后用 int num4 = 40; System.out.println(num4--); System.out.println(num4); // 先用后减 // 题目来了 int a = 10; int b = 20; int result = ++a + b--; // a先加 11, b先用20---》 31 System.out.println("值是"+result); System.out.println(a); System.out.println(b); } }
2.3、赋值运算符
-
基本运算符: =
-
符合运算符:+=, -=, *=, /=, %=
-
注意事项:
- 只有变量才能使用赋值运算符,常量不可以使用
- 符合运算符其中隐藏了一个强制类型转换
public class DemoPerator{ public static void main(String[] args){ int a = 10; a += 5; System.out.println(a); } }
2.4、比较运算符
-
>
, <, >=, <=, ==, != -
注意事项:
- 比较运算符的结果是一个boolean类型
- 多次判断不可以使用 1<a<10; 不建议
public class Demo{ public static void main(String[] args){ int a = 10; int b = 20; System.out.println(a>=b); } }
2.5、逻辑运算符
-
与:&& 左右两边全部为true则成立
-
或:|| 左右两边又一边为true则成立
-
非: ! 取反,true变为false,false变为true
-
例子
public class Demo{ public static void main(String[] args){ System.out.println(true&&true); System.out.println(true||true); System.out.println(!true); int a = 10; System.out.println(0<a&&a>2); } }
2.6、三元运算符
-
格式:数据类型 变量名称 = 条件判断 ?表达式A : 表达式B
-
流程:
- 首先判断条件是否成立:
- 如果表达式成立 true, 那么将表达式A的值赋值给左侧的变量;
- 如果不成立false, 那么将表达式B的值赋值给左侧的变量; 二者选其一
- 注意事项: 1.必须同时保证表达式A和表达式B都符合左侧数据类型的要求. 2.三元运算符的结果必须使用
public class Demo{ public static void main(String[] args){ int a = 10; int b = 20; int max= a>b ? a:b; System.out.println(max); } }
- 首先判断条件是否成立:
3、方法的入门
-
方法:将功能性的代码进行封装
-
定义方法格式:
public static void 方法名称(){ 方法体 }
-
方法名称的命名和标识符是一样的
-
注意事项
- 方法定义的先后顺序不重要
- 方法的定义不能产生嵌套关系包含关系
- 调用方法的使用才是执行; 方法名称()
public class Method{ public static void main(String[] args){ PrintHello(); } public static void PrintHello(){ System.out.println("hello world"); } }