JAVA基础语法
1.类型转换
1.1自动转换类型
解释:类型范围小的变量可以直接转换为类型范围高的变量。
(1)自动类型转换的其他形式
byte —>short —>int —>long —>float —>double
1.2表达式的自动类型转换
解释:小范围的类型会自动转换成大范围的类型运算
- 注意:最终类型由表达式中最高类型决定。
- 注意:byte、short、char是直接转换成int类型参与运算的。
1.3强制类型转换
解释:可以强行将类型范围大的变量、数据赋值给类型范围小的。
场景:
int a =功能1(); int a = 20;
功能2(byte b); byte b = a;//报错
问题:类型范围大的变量或数据,不能直接赋值给类型范围小的变量,会报错。
公式:
数据类型 变量2 = (数据类型)变量1、数据
tip : 强转快捷键 Alt+enter
- 注意:强制转化类型可能会造成数据类型(丢失)溢出;
- 注意:浮点型转化成整数,直接丢掉小数点部分,只保留整数部分。
2.运算符
2.1基本算数运算符
(+)加 (-)减 (×)乘 (/)除 (%)取余
int a=10;
int b=3;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);//3.3333有最高类型决定。
System.out.println(3/2);
System.out.println(3*1.0/2);//1.5
System.out.println(3/2*1.0);//1.0
System.out.println(a%b);//1
注意:如果两个整数做除法,其结果一定为整数,因为运算最高类型为整形,如要小数给除数×0.1。
2.2“+”符号做连接符
解释:与字符串做+运算时会被当做连接符,其结果还是字符串
int a=5;
System.out.println("abc" +'a');//abca
System.out.println("abc"+a);//abc5
System.out.println(5+a);//10
System.out.println("abc"+5+'a');//abc5a
System.out.println(15+"abc"+15);//15abc15
System.out.println(a+'a');//102 字符a底层97运算
System.out.println(a+""+'a');//5a
System.out.println(a+'a'+"xl");//102 xl
System.out.println("xl"+a +'a');//xl5a
System.out.println("xl"+(a+'a'));//xl102括号优先级
2.3自增自减运算符
符号 | 作用 | 解释 |
---|---|---|
++ | 自增 | 变量值加1 |
– | 自减 | 变量值减1 |
- 注意:++和 --可以放在自变量后面,也可以放在自变量前面。
- 注意:++、–只能对自变量进行加值、减值,不能对字面量进行操作。
int a=10; int b= 10;
a++;//a=a+1; 等于++a b--;//b=b-1 等于--b
System.out.println(a); System.out.println(b);
如果++、–不是单独使用,放在变量前后会存在一定的区别。
区别1:放在变量前面,要先对变量进行+1、-1再进行运算;
int i=10;
int j=++i;
System.out.println(i); //11
System.out.println(j); //11
区别2:放在变量后面,变量先进行运算,在进行+1、-1;
int m=10;
int n=m++;
System.out.println(m);//11
System.out.println(n);//10
2.4赋值运算符
符号 | 作用 | 举例 |
---|---|---|
= | 直接赋值 | int a=10 10赋给a |
+= | 加厚赋值 | a+=b等价于 a=(a的数据类型)(a+b);a+b的值赋给a |
-= | 减后赋值 | a-=b等价于 a=(a的数据类型)(a-b);a-b的值赋给a |
×= | 乘后赋值 | a×=b等价于 a=(a的数据类型)(a×b);a×b的值赋给a |
/= | 除后赋值 | a/=b等价于 a=(a的数据类型)(a/b);a/b的值赋给a |
%= | 取余后赋值 | a%=b等价于 a=(a的数据类型)(a%b);a%b的值赋给a |
其中隐含了强制转换符
int m=10;
int n=5;
m+=n;//等价于:m=(int)(m+n)
m-=n;//等价于:m=(int)(m-n)
m*=n;//等价于:m=(int)(m*n)
m/=n;//等价于:m=(int)(m/n)
m%=n;//等价于:m=(int)(m%n)
2.5关系运算符
解释:是对数据进行条件判断的符号,返回结果为布尔结果(false,true).
符号 | 举例 |
---|---|
==(相等) | a==b,判断a和b的值是否相等,成立返回True,不成立返回false。 |
!=(不相等) | a!=b,判断a和b的值是否不相等,成立返回True,不成立返回false |
>(大于) | a>b,判断a是否大于b,成立返回True,不成立返回false |
>=(大于等于) | a>=b,判断a是否大于等于b,成立返回True,不成立返回false |
<(小于) | a<b,判断a是否小于b,成立返回True,不成立返回false |
<=(小于等于) | a<=b,判断a是否小于相等b,成立返回True,不成立返回false |
注意:做判断时,千万别把”==“误写成“=”。
int a=10;
int b=10;
System.out.println(a==b);//true
System.out.println(a!=b);//false
System.out.println(a>b);//false
System.out.println(a<b);//false
System.out.println(a>=b);//true
System.out.println(a<=b);//true
2.6逻辑运算符
解释:可以把多个条件的布尔值放在一起运算,最终返回一个布尔值结果。
符号 | 名称 | 说明 |
---|---|---|
& | 逻辑与 | .两个必须都为true,结果才为true。存在一个为false,结果为false。 |
&& | 短路与 | 前一个为True,执行后面的。前一个为false,后面不执行。 |
| | 逻辑或 | 只要有一个为true,结果就为true。 |
|| | 短路或 | 前一个为true,不执行后面的;前一个为false,执行后面的。 |
! | 逻辑非 | !true=false;!false=true; |
^ | 逻辑异或 | 如果两个条件结果都相同,结果为false;两个条件结果不相同,结果为true。 |
注意:“&”、“|”:无论左边是false还是true,右边都要执行。
常用运算符是;“&&”、“||”、“!”
2.7三元运算符
公式:
条件表达式 ? 值1 :值2;
流程:首先计算关系表达式的值,如果为true,则返回值1,false返回值2。
int a=100;
int b=20000;
int max=a>b ? a:b;
System.out.println(max);//20000
2.8运算符优先级
优先级 | 运算符 |
---|---|
1 | () |
2 | !、/、++、– |
3 | *、/、% |
4 | +、- |
5 | <<、>>、>>> |
6 | <、<=、>、>=、instanceof |
7 | ==、!= |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | =、+=、-=、*=、/=、%=、&= |