JAVA学习第三天
本文内容为本人学习内容,仅供参考,如内容有误,请斧正,谢谢!
表达式自动提升类型
在程序中出现直接写出来的数字,如果是整数、默认为int类型,如果是小数、默认为double类型。
一个表达式包含多种数据类型时,结果的数据类型会自动提升。规则如下。
- byte、short、
字面量(直接量)
在代码中直接出现的数字或者字符串,叫作字面量。
int m = 20;//20是字面量
float f5 = 3.14f//3.14是字面量
String str = "字符串"//字符串 是字面量
自动装箱和自动拆箱
每种基本类型,都对应一种包装类型(类),基本类型与包装类型之间,可以自动转换。
从基本类型转为包装类型、称为自动装箱。
从包装类型转为基本类型称为自动拆箱。
基本类型 | 包装器类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
int i =10;
Integer integer = i;//基本类型直接复赋值给包装类型,就是自动装箱
int i1 = integer;// 包装类型直接赋值给基本类型,就是自动拆箱
//包装类型的常用方法
String str = "314";
Integer value = Integer.valueOf(str);//把字符串转为整型
System.out.println(value+1);
int i2 = Integer.parseInt(str);
System.out.println(i2+2);//把字符串转为int类型
java里面的数据类型
运算符
运算符是一种特殊的符号,用于数据计算,赋值和比较,运算符将多个操作数连接在一起,就成为了表达式。
java运算符包含:
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三目运算符
算术运算符
java里面的算术运算符包含: “ + ”、“ - ”、“ / ”、“ * ”、“ % ”
- “ + ” 运算符除了数学的相加外,还能作用于字符串的拼接。
int sum1 = 50+48;
String str1 = "sum1的值是"+sum1;//+用于字符串,自动把后面的intint类型的数字转为字符串。
System.out.println(str1);
String str2 = "事实是" + true;//字符串可以和任意类型拼接
System.out.println(str2);
- “ - ” 减法运算
- “ * ” 乘法运算
- “ / ” 除法运算
//除法
int res1 = 8/4;
System.out.println(res1);
res1 = 8/3;
System.out.println(res1);
//两个整数相除,得到的结果是整数,舍弃小数部分。
/*
res1 = 8/0;
System.out.println(res1);
//整数的除法里面不能用0作为除数,程序将会抛出异常。结束程序
*/
double res2 = 8/2.5;
System.out.println(res2);
//只要有一个操作数为小数,那结果就是一个小数。
res2 = 5.0 / 0 ;
System.out.println(res2);
//小数作为除浮点数可以除以0,但得到的结果是Infiniti(无限大)
-
“ % ” 模运算(取余)
得到除法的余数
整数取模,除数不能为0
小数取模,除数可以为0,得到的结果是NaN(Not a Number)
//模运算 res1 = 5 % 3; System.out.println(res1); /* res1 = 5 % 0; System.out.println(res1); //模运算也不能用0作为除数,会抛出异常 */ res2 = 5.0 % 3; System.out.println(res2); //得到的结果也是一个浮点数。一般不会用浮点数取余。
-
“ ++ ” 单目运算(自加1),可以放在操作数的左边或者右边。
//++运算 int i = 1; int j = 1; int res4 = 5 + i++;//变量i先参与运算,再自加1。 System.out.println(res4); int res3 = 5 + ++j;//变量i先自加1,在参与运算。 System.out.println(res3);
-
" – " 弹幕运算符,自减1,可以放在操作数的左边或右边(与++相同)。
赋值运算符
- “ = ” 赋值运算 ,把=左边的数值,赋值给右边的变量。
//赋值运算
int m = 5;//将5赋值给m
m = 3+3;
m = i - j;
Scanner scanner = new Scanner(System.in);
System.out.println("请输出一个数");
int n = scanner.nextInt();//将输入的值,赋值给n。
System.out.println(n+5);
-
扩展(组合)的赋值运算符。
n += 2;//n = n + 2; m -= 2;//m = m - 2; m *= 2;//m = m * 2; m /= 2;//m = m / 2; m %= 2;//m = m % 2;
比较运算符
用于判断两个操作数的大小,是否相等。包含:
“ > ” 大于
" < " 小于
" == " 等于
" <= " 小于等于
" >= " 大于等于
" ! =" 不等于
System.out.println(3>2);//true
System.out.println(3<2);//false
System.out.println(3 == 3);//true
System.out.println(3 != 3);//false
逻辑运算符
-
“ & ” 与
-
" && " 短路与
-
“ | ” 或
-
“ || ” 短路或
-
“ ! ” 非
-
" ^ " 异或
//逻辑运算符
System.out.println(true & true);
System.out.println(true & false);
System.out.println(true && true);
System.out.println(true && false);
//两个操作数都为true,结果才为true,否则为false
int q = 1;
System.out.println(true && (2 == ++q));
System.out.println(q);
System.out.println(false && (2 == ++q));
System.out.println(q);
//第一个操作数是false,所以后面的表达式不会被执行。
System.out.println(true | true);
System.out.println(true | false);
System.out.println(false | false);
System.out.println(true || true);
System.out.println(true || false);
System.out.println(false || false);
//" | " " || " 只要有一个为true,就返回true
System.out.println(!true);//false
System.out.println(true ^ false);//true
System.out.println(true ^ true);//false
System.out.println(false ^ false);//false
//相同返回true,不同返回false
位运算符
- “&” 按位与
- "|"按位或
- "~"按位非
- "^"按位异或
- "<<"向左移位
- " >> "向右移位
- " >>> "无符号游戏
//位运算符
int a = 5;//101
int b = 7;//111
System.out.println(a & b);
// 101(5)
System.out.println(a | b);
// 111(7)
System.out.println(~a);//符号位变为1,结果为负
System.out.println(a ^ b);
// 010(2)
a = 2;
System.out.println(a << 3);//16,二进制的10,左移三位得到10000(16)
System.out.println(5 >> 2);//101=>1
System.out.println(-5 >>> 2);
三目运算符
用于两分支的判断,等效于if else语句
语法结构:条件表达式 ? 为真的值 : 为假的值
int i = 5;
int j = 6;
int rest = i<j ? i : j;
// 用一个变量接返回的值 = 条件表达式 ? 为真时返回 : 为假时返回
System.out.println(rest);
练习
从控制台输入两个数,打印较大的数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数");
int m = scanner.nextInt();
System.out.println("请在输入一个数");
int n = scanner.nextInt();
int big = m<n ? n : m;
System.out.println(m+"与"+n+"相比,"+big+"更大");
运算符的优先级
括号>单目运算符>算术运算>比较运算符>逻辑运算符>三目运算符>赋值运算符
条件语句
单分支条件判断
if(条件表达式){
//条件为真时执行的语句
}
int i =10;
if (i == 10){
System.out.println(i);
}
双分支判断
if(条件表达式){
//条件为真时执行的语句
}else{
//条件为假时执行的语句
}
多分支判断
if(条件表达式){
//条件为真时执行的语句
}else if(条件表达式){
//条件为假时执行的语句
}