JavaSE基础Day02
程序员文章站
2024-01-21 18:48:16
...
JavaSE基础Day02
课程纲要
1. 数据类型转换 -----> 自动类型转换 和 强制类型转换
2. 运算符 ----------> 今日重点
3. 补充Scanner 键盘录入
第一章 数据类型转换
1、自动类型转换
1. 什么是数据类型转换?
在一个变量定义的过程当中,等号左右两边数据类型不一致的情况下,出现数据类型转换,主要分为两种。
2. 类型转换的分类
A. 自动类型转换(数据范围从小到大)
B. 强制类型转换(数据范围从大到小)
3. 数据范围大小顺序:
byte,short,char -> int -> long -> float -> double 【基础班大家唯一需要记忆的地方】
4. 自动类型转换的格式
格式:
数据类型 变量名称 = 数据值;
例如:
double dd = 3.66F; //将 float 类型的数据,转换成为 double 类型的数据
long num = 520; //将 int 类型的数据,转换成为 long 类型的数据
2、强制类型转换
1. 格式写法
A. 格式:
数据类型小的 变量名称 = (数据类型小的)数据值;
B. 例如:
float num1 = (float)3.14; //将 double 类型转换成为 float 类型,浮点数默认是double,如果是float需要加F
int num2 = (int)521L; //将 long 类型的521L数据转换成为int类型,long类型的数据后面需要加上L
2. 注意事项
"强制类型转换,可能损失精度" //可能的含义: 有可能有精度损失,有可能没有精度损失。
例如:
int num3 = (int)521L; //这里就没有精度损失,因为int类型当中,可以存放 521 数据。
int num4 = (int)3.99F; //这里就会出现精度损失,结果是3.相比之前的精度就变化了。
3、常量优先计算原则
1. 三种类型的数据参与运算的情况
byte short char 参与 数学运算(加减乘除等)的过程当中,会自动提升为 int 类型,进行计算。(前提是变量)
2. 例如:
//[1]变量+变量
byte num1 = 3;
byte num2 = 4;
byte result1 = (byte)(num1+num2); //自动提升 int
System.out.println(result1);
//--------------------------------
//[2]变量+常量
byte num3 = 5;
byte result2 = (byte)(num3 + 10); //自动提升 int
System.out.println(result2);
//--------------------------------
//[3]常量+常量
byte result3 = 30+40; //不会报错,常量相加。
System.out.println(result3);
3. 常量优先计算原则:
如果是两个常量参与运算。先计算结果,再看数据类型。
上面的 30+40 先加再看类型,加完之后,结果是 70, 70在 byte 范围之内,所以不会报错。
注意.如果加完之后,超过了 byte 的范围,就会报错.需要强制类型转换了。
4、ASCII码表
1. ASCII码表的含义
American Standard Code for Information Interchange 美国信息交换标准代码
简单一点说: 就是二进制数据(十进制)和英文字母符号之间的对应关系
'0' ---> 数字 48
'A' ---> 数字 65
'a' ---> 数字 9
参考: 川哥笔记 chm --> B知识附录 --> ASCII码表
2. 万国码表 Unicode
ASCII码表 是美国人使用的
GBK 码表 是国标,中国使用的
ISO-8859-1 欧洲人使用的码表
UTF-8 码表,统一了世界码表,称之为"万国码表"
3. 简单记忆码表的方式: +0 记忆法
//加上0的方式
char zhifu1 = '我';
char zhifu2 = '爱';
char zhifu3 = '你';
System.out.println(zhifu1+0); //25105
System.out.println(zhifu2+0); //29233
System.out.println(zhifu3+0); //20320
第二章 运算符
1、算术运算符
1. 常见的算术运算符
加、减、乘、除、取余(取模)
2. 案例:
小学应用题目
int apple = 14;
int boy = 3;
//======[小学三年级的玩法]=========
int x = apple/boy; //商
int y = apple%boy; //余数
System.out.println(x); //4
System.out.println(y); //2
//======[小学五年级的玩法]=========
double z = 1.0*apple/boy;
System.out.println(z); //4.6666666
计算一个三位数的各个数字(例如:有一个三位数是 153,计算个位是几,十位是几,百位是几)
int num = 153;
int ge = num%10; //个位数字
int shi = num/10%10; //十位数字 153÷10=15 15÷10=1....5
int bai = num/10/10%10; //百位数字 153÷10=15 15÷10=1 1÷10=0...1
System.out.println(ge); //3
System.out.println(shi); //5
System.out.println(bai); //1
3. 加法的多种用法
A. 数字是 直接做加法运算
B. 字符是 转换成为int类型做加法运算
C. 字符串是 连接在一起
练习案例: //打印输出一个式子: 50-20=30
int x = 50;
int y = 20;
System.out.println(x); //50
System.out.println(x+"-"); //50-
System.out.println(x+"-"+y); //50-20
System.out.println(x+"-"+y+"="); //50-20=
System.out.println(x+"-"+y+"="+(x-y)); //50-20=30
4. 自增和自减操作
A. 符号问题
自增: ++ 例如: num++; 或者 ++num; //含义:在原始数据的基础上,加上1
自减: -- 例如: num--; 获取 --num; //含义:在原始数据的基础上,减去1
B.混合使用的情况(了解即可,后期使用不多)
口诀: "前加,先加后用;后加,先用后加"
2、赋值运算符
1. 赋值运算符的分类
A. 基本的赋值运算符
=
B. 复合的赋值运算符
+=
-=
*=
/=
%=
2. 注意事项
复合的赋值运算符当中,隐含了强制类型转换。
题目: short s = 1; s+=1; 和 short s=1; s=s+1; 请问,哪一个会报错,为什么?
答案: 后面的会报错,short变量参与运算的过程当中,会自动提升为 int 类型,需要强制类型转换。
前面没有报错的原因是, 复合赋值运算符当中包含了强制类型转换。相当于 s = (short)(s+1);
3、比较运算符
1. 常见的比较运算符
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等等于
!= 不等于
2. 注意事项
A. 比较运算符的结果是 boolean 类型,成立是 true 不成立是 false
B. 千万不要把 == 写成 = ,双等是比较运算符,单等是赋值运算符。
4、逻辑运算符
1. 为什么需要使用逻辑运算符? 逻辑运算符有什么用?
用于连接关系表达式。
例如: 1<x<10 ,这里的写法不正确!应该怎么写? 1<x && x<10
2. 常见的逻辑运算符
A.与(并且) && "有false则false"
B.或(或者) || "有true则true"
C.非(取反) ! "非true则false,非false则true"
3. 注意事项
A. 逻辑运算符的结果是 boolean 类型
B. 短路效果: 如果左边可以确定结果,右边不执行。
4. 生活实例:
找女朋友的要求:
a. 既要颜值高,又要身材好。 --> 逻辑与 &&
b. 要么颜值高,要么身材好。 --> 逻辑或 || 降低要求
c. 只要不是男的就行。 ------> 逻辑非 ! 降低要求
5、三元运算符
1. 格式:
数据类型 变量名称 = 表达式 ? 数值1:数值2; //例如: int RR = x>y?a:b;
2. 流程:
A. 先计算表达式的结果,看是 true 还是 false.
B. 如果结果是 true,那么值1就是结果。 //相当于是 RR=a;
C. 如果结果是 false,那么值2就是结果。//相当于是 RR=b;
3. 注意事项
A. 数值1和数值2的数据类型必须统一,和等号左边的数据类型要一致。
B. 三元运算符,必须使用。要么打印输出,要么赋值,不能单独去写。//不能写: x>y?a:b; 错误写法!
第三章 键盘录入 Scanner
1、Scanner的介绍
1. 为什么需要介绍 Scanner?
前面我们写的 变量值都是固定的.
如果想要修改,需要修改Java代码,很不方便。
所以介绍 Scanner,保证程序的灵活性,可以手动输入数据。
2. Scanner 使用的操作步骤?
A. 导包 import java.util.Scanner;
B. 创建对象 Scanner sc = new Scanner(System.in);
C. 录入数据 int num = sc.nextInt();
2、综合案例(判断对称三位数)
import java.util.Scanner; //【A】导包
public class Demo{
//判断一个三位数是否是对称数字 131 就是对称数字
public static void main(String[] args){
Scanner sc = new Scanner(System.in); //【B】创建对象
System.out.println("请输入一个三位数:");
//[1]获取数据
int num = sc.nextInt(); //【C】录入数据
//[2]操作数据
//获取到个位数字和百位数字
int ge = num%10;
int bai = num/10/10%10;
String str = (100<=num&&num<=999)&&(ge==bai)?"YES":"NO";
//[3]显示结果
System.out.println("是否是对称数字:"+str);
}
}
上一篇: JavaSE-day02