学习笔记 Day3"/>
JavaSE学习笔记 Day3
JavaSE学习笔记 Day3
[上一篇]()
文章目录
- JavaSE学习笔记 Day3
- 二、java语言基础
- ···
- 2.9数据类型转换
- 2.9.1自动类型转换
- 2.9.2强制类型转换
- 2.9.3char类型的转换
- 2.9.4补充
- 三、运算符
- 3.1数学运算符
- 3.2自增与自减
- 3.3赋值运算符
- 3.4关系运算符
- 3.5逻辑运算符
- 3.6三木运算符
- 3.7控制台录入
- 四、流程控制语句
- 4.1分支结构
- 4.1.1if结构
- 4.1.2if/else结构
- 4.1.3多重if结构
- 4.1.4if结构嵌套
- 4.1.5if中的细节
二、java语言基础
···
2.9数据类型转换
基本数据类型之间是可以相互转换的,这种转换可分为如下两种
自动类型转换
小范围的类型可以自动转换为大范围类型
强制类型转换
大范围类型若想转换为小范围类型需要强制类型转换
2.9.1自动类型转换
在java中有个符号叫等号,等号的作用是赋值(区别与数学中)
要求等号的左右两侧的类型要保持一致,若不一致就需要类型转换
等号的运算顺序是从右向左的
java是强类型语言,要求等号左右类型必须保持一致
byte short int long float doule 按照此顺序进行自动类型转换
boolean类型不参与转换
char特殊情况,使用较少
从前向后就是自动类型转换
自动类型转换又称隐式类型转换,无需做任何处理
// 自动类型转换
public static void main(String[] args) {// =从右向左的int a = 10;//定义变量// double = int 将int类型赋值给double类型double d = a;// float = double 将double赋值给float// float f = d;
}
2.9.2强制类型转换
在数据类型兼容的情况下,大转小就是强制类型转换
又称为显示类型转换
顺序和自动类型转换相反
强制类型转换会丢失精度
语法
目标类型 = (目标类型) 源类型;
public static void main(String[] args) {double d = 10.022222222222222222222222;// float = doublefloat f = (float) d;System.out.println(f);
}
2.9.3char类型的转换
char类型的取值是0~65535的
char的范围是在int取值范围之内的,char向int转换是自动类型,int向char是强制类型
char可以理解为是完全正向的short类型,因为两者的范围是一样的都是65536个数
public static void main(String[] args) {char c = '你';// byte = char 强制类型转换byte b = (byte) c;// byte = char 强制类型转换short s = (short)c;b = 10;// char = byte 强制类型转换c = (char)b;// char = short 强制类型转换c = (char)s;
}
2.9.4补充
超出范围的强制类型转换,需要进行二进制操作的
public static void main(String[] args) {// -128下一位(-129)就是127int i = -129;byte b = (byte) i;System.out.println(b);// 127下一位(128)是-128i = 128;b = (byte) i;System.out.println(b);
}
三、运算符
3.1数学运算符
+
1.数值相加 在java中做计算时最小的返回结果为int,最大结果为double
char本身可以当做数值型类处理
2.正数
3.字符串拼接 拼接的顺序是从左向右的,所有和字符串拼接的结果都是字符串
public static void main(String[] args) {// 1.加法计算int a = 10;int b = 20;System.out.println(a + b);char c = 'a';// char+int结果为int类型System.out.println(c + 1);byte bb = 10;short ss = 20;char cc = 'h';// 相加的结果可以使用哪些类型接收:int long float double// int result = bb + ss + cc;// long result = bb + ss + cc;// float result = bb + ss + cc;double result = bb + ss + cc;// 2.正数System.out.println(+10);// 3.字符串拼接 ""空串:没有任何内容的字符串System.out.println(2+""+3);//23System.out.println(""+2+3);//23System.out.println(2+3+"");//5// 小括号先计算System.out.println(""+(2+3));//5
}
-
1.数值相减 2.负数
public static void main(String[] args) {int a = 10;int b = 10;System.out.println(a - b);byte bb = 10;short ss = 10;char cc = 10;int result = bb + ss - cc;
}
*
乘法运算,注意乘法时最容器超出范围
public static void main(String[] args) {System.out.println(10 * 10);System.out.println(1000000000 * 1000000000);
}
/
java中所有的int/int的结果为int(取整)
除数为0时,会抛出异常ArithmeticException(数学异常),异常之下的代码不会执行了
除数为0.0时,结果为Infinity(无穷)
0/0.0时,结果为NaN(Not a Number,不是一个数,非数)
public static void main(String[] args) {System.out.println(10 / 2);System.out.println(10 / 3);//结果为3 取整// ArithmeticException数学异常// System.out.println(10 / 0);//除0 /by zero// 异常之下的代码是无法执行的System.out.println("嗨嗨嗨");System.out.println(10 / 0.0);//InfinitySystem.out.println(0 / 0.0);//NaN
}
%
模运算,取余运算符
public static void main(String[] args) {System.out.println(5 % 3);//2System.out.println(5 % -3);//2System.out.println(-5 % 3);//-2System.out.println(-5 % -3);//-2
}
3.2自增与自减
++ –
i++ 和 ++i
语法上都是自增
i-- 和 --i
语法上都是自减
过程中有区别
i++ 先使用,再自增
++i 先自增,再使用
public static void main(String[] args) {int i = 10;i ++;System.out.println(i);int j = 10;++ j;System.out.println(j);System.out.println("------------------------------");int a = 2;System.out.println(a ++);//2 ==> 3 在语句之内先使用对应的值System.out.println(a);//3System.out.println(++ a);//4 在语句之内后使用对应的值
}
3.3赋值运算符
赋值运算符的优先级最低
= 赋值 从右向左
+= sum+=i 等价与 sum = sum + i
-= sum-=i 等价与 sum = sum - i
*= 同上
/= 同上
%= 同上
public static void main(String[] args) {int a = 10;a += 10;//a = a + 10;System.out.println(a);a -= 5;System.out.println(a);a *= 2;System.out.println(a);a /= 10;System.out.println(a);a %= 3;System.out.println(a);System.out.println("-----------------------------");// ++ 和 += 自带类型转换 但是 s = s + i不能类型转换// byte/short自增可以使用++ 和 +=1 但 s=s+1不能使用byte i = 10;i ++;System.out.println(i);i += 1;System.out.println(i);/*i = i + 1;//1是int类型System.out.println(i);*/
}
3.4关系运算符
比较运算符
返回结果都为boolean
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
public static void main(String[] args) {System.out.println(1 > 2);System.out.println(1 < 2);System.out.println(1 >= 2);System.out.println(1 <= 2);System.out.println(1 == 2);System.out.println(1 != 2);
}
3.5逻辑运算符
逻辑运算符由关系运算符组成,返回结果同样为boolean
&&/& 和
两个条件并列
同真为真,有假则假*
||/| 或
两天条件选一个
同假为假,有真则真*
! 是
是非转换
非真即假,非假即真*
public static void main(String[] args) {System.out.println(true && true);System.out.println(1 < 2 && 3 < 4);System.out.println(true && false);System.out.println(false && true);System.out.println(false && false);// && 和 &结果是一样的System.out.println(true & true);System.out.println(true & false);System.out.println(false & true);System.out.println(false & false);System.out.println("---------------------------------------");System.out.println(true || true);System.out.println(true || false);System.out.println(false || true);System.out.println(false || false);System.out.println(true | true);System.out.println(true | false);System.out.println(false | true);System.out.println(false | false);System.out.println("---------------------------------------");System.out.println(!true);System.out.println(!false);
}
&& 和 & 的区别
&&短路语句,效率高
若条件1为false,条件2就不执行
&不短路
若条件1为false,条件2正常执行
|| 和 | 的区别
||短路语句,效率高
若条件1为true,条件2就不执行
|不短路
若条件1为true,条件2正常执行
public static void main(String[] args) {int a = 10;System.out.println(1 > 2 && a ++ > 10);//条件1为:false 条件2不执行了 a没有进行++System.out.println(a);int b = 10;System.out.println(1 > 2 & b ++ > 10);//不短路System.out.println(b);int c = 10;System.out.println(1 < 2 || c ++ > 10);System.out.println(c);int d = 10;System.out.println(1 < 2 | d ++ > 10);System.out.println(d);
}
3.6三木运算符
三元运算/三目运算
boolean?结果1:结果2;
boolean为true时,得到结果1
boolean为false时,得到结果2
public static void main(String[] args) {System.out.println("请输入java成绩:");int score = 59;System.out.println(score >= 60 ? "奖励自己一顿大餐" : "请大家吃雪糕");
}
3.7控制台录入
使用java的控制台,接收用户输入的信息,和程序之间进行交互
步骤:
1.创建控制台扫描器Scanner
2.引入Scanner工具类
3.使用Scanner对控制台输入的内容进行扫描
扫描器(Scanner)在一个类中可以使用多次,只定义一次即可
常用的接收类型:int double String
// 2.引入Scanner
import java.util.Scanner;public class Demo12 {public static void main(String[] args) {
// 1.定义扫描器Scanner input = new Scanner(System.in);//ctrl+shift+o// 3.对输入的内容进行扫描// 情况1:int类型System.out.println("请输入一个int类型的值:");int a = input.nextInt();System.out.println("您输入的int类型为:"+a);// 情况2:double类型System.out.println("请输入一个double类型的值:");double d = input.nextDouble();System.out.println(d);// 情况3:String类型System.out.println("请输入一个String类型的值:");String str = input.next();System.out.println(str);// 其他情况System.out.println("请输入一个byte类型的值:");byte b = input.nextByte();System.out.println(b);System.out.println("请输入一个boolean类型的值:");boolean boo = input.nextBoolean();System.out.println(boo);
// char需要特殊记忆,使用较少System.out.println("请输入一个char类型的值:");char c = input.next().charAt(0);System.out.println(c);}
}
四、流程控制语句
可以通过流程控制语句改变代码的执行顺序
默认的顺序:从上向下,从左向右
分支结构:有选择的执行或者跳过某段代码
循环结构:重复执行某段代码
4.1分支结构
4.1.1if结构
语法
if(boolean){
//代码段
}
当boolean类型为true时执行代码段;false时跳过
public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入钟良的余额:");double balance = input.nextDouble();// 当boolean为true会执行代码段,为false时跳过if(balance < 10) {System.out.println("我没钱了,妈给我打点钱");}System.out.println("程序结束");
}
4.1.2if/else结构
语法
if(boolean){
//代码段1
}else{
//代码段2
}
当boolean类型为true时执行代码段1;false时执行代码段2
public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入钟良的余额:");double balance = input.nextDouble();// 实际开发中,尽量少的使用else语句/*if(balance < 10) {System.out.println("我没钱了,妈给我打点钱");}else {System.out.println("我要吃一顿大餐,9.9疯狂星期四");}*/// 更推荐写如下代码if(balance < 10) {System.out.println("我没钱了,妈给我打点钱");}if(balance >= 10) {System.out.println("我要吃一顿大餐,9.9疯狂星期四");}System.out.println("程序结束");
}
4.1.3多重if结构
语法
if(boolean){
//代码段1
}else if(boolean){
// 隐藏条件,不满足上面的条件,满足当前条件是执行
//代码段2
}else if(boolean){
//代码段3
}…else if(boolean){
//代码段n
}else {
// 不符合上面条件执行的代码块
}
执行条件为true的代码段,上面的判断会拦截下面的判断
public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入钟良的余额:");double balance = input.nextDouble();if(balance >= 100) {System.out.println("吃点好的,来份臭豆腐");}/*else if(balance >= 60){
// 逻辑出了问题 System.out.println("嘿嘿嘿");}*/else if(balance >= 90 /*隐藏条件&& balance < 100 可以不写*/) {System.out.println("鸡架拌面");}else if(balance >= 80) {System.out.println("打卤面");}else {System.out.println("回家煮鸡蛋吃");}System.out.println("程序结束");
}
4.1.4if结构嵌套
语法
if(条件1){
if(条件2){
同时满足条件1条件2
}else{
满足条件1但不满足条件2
}
}else{
不满足条件1,与条件2没有关系
}
public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入百米的时间:");double time = input.nextDouble();if(time < 10) {System.out.println("请输入性别:");String gender = input.next();// 字符串的判断使用equals方法 使用"男"和gender去比较if("男".equals(gender)) {System.out.println("进入男子组决赛");}else {System.out.println("进入女子组决赛");}} else {System.out.println("哥们在接着练吧");}
}
4.1.5if中的细节
1.java中基本数据类型的比较使用 ==,字符串类型的比较使用str1.equals(str2) 若一致返回true,否则返回false
String str1 = "hello";
String str2 = "hello";
// 内容相同返回true,内容不一致返回false
System.out.println(str1.equals(str2));
2.当且仅当,if结构有一条语句时,{}可以省略
if(str1.equals(str2)) System.out.println("好");
3.多重if时,要注意逻辑错误,要将更严苛的条件写在前面
rintln("嘿嘿嘿");}*/else if(balance >= 90 /*隐藏条件&& balance < 100 可以不写*/) {System.out.println("鸡架拌面");}else if(balance >= 80) {System.out.println("打卤面");}else {System.out.println("回家煮鸡蛋吃");}System.out.println("程序结束");
}
更多推荐
JavaSE学习笔记 Day3
发布评论