欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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, 70byte 范围之内,所以不会报错。
	注意.如果加完之后,超过了 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);
	}
}