Day02课堂笔记
标签(空格分隔): java基础
1:常量的概述和使用 (非常重要)
常量:在程序运行过程中,其值不可以发生改变
常量分类:字符串常量 整数常量 小数常量 字符常量 布尔常量 空常量
举例: 布尔常量 true false
空常量 null
字符串常量:用双引号括起来 ” ”
字符常量: 单引号括起来 ”
2.:进制概述
二进制 八进制 十进制 十六进制
八进制:三位一组
十六进制:四位一组
3:进制表现形式(掌握)
- 二进制: 0b开头 0-1 可以大写也可以小写
- 八进制: 0开头 0-7
- 十进制: 默认
- 十六进制:0x x可以小写可以大写
4:进制转换(了解)
- 任意进制转十进制 : 系数 * 基数的权次幂 相加即可
举例:12345
1*10^4 + 2 *10^3 + 3*10^2 + 4*10^1 + 5
系数:每一位的数
基数:进制
权次幂:从右往左,依次算个数,不包括自身 十进制转任意进制 : 除基倒取余数,直至商为0
快速转换:
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1- 十进制转十六进制: 先转成二进制,四位一组,对着上面的值相加即可
- 十进制转二进制:60 —00111100
5:原反补码(了解)
举例:01111000
最左边的为最高位: 0:正数 1:负数
正数:原反补都一样
负数:反码是原码取反,但最高位符号位不变
负数的补码是反码的末位+1
举例:⦁ A:已知原码求补码: 0b10110100
⦁ B:已知补码求原码: 0b11101110
6:变量的概述 (非常非常非常重要)
变量:在程序运行过程,其值在一定范围内可以发生改变.
可以用来存放同一类型常量,可以重复使用
内存!定义变量的 要去内存申请空间--->数据类型
补充:软件是按照特定顺序的数据和指令的集合,数据存在内存,要去内存申请空间,用变量来申请内存空间,这个时候变量就可以存储数据
常量:
7:数据类型(非常非常非常重要)
数据类型分类:基本数据类型和引用数据类型
基本数据类型(四类八种):
整数型 byte short int long
浮点型 float double
字符型 char
布尔型 boolean (常量 true false)
范围: byte -128到127 1个字节
short 两个字节
int -2^31~2^31-1 4个字节
long 八个字节
float :四个字节
double:八个字节
char:两个字节
boolean:理论上1/8个字节
引用数据类型:类 接口 数组 枚举
8:定义不同数据类型的变量(非常非常非常重要)
格式一:
数据类型 变量名 = 初始化值;
格式二:
数据类型 变量名;
变量名 = 初始化值;
变量名:标识符
默认的整数类型 就是int数据类型
默认的小数类型 就是double数据类型
Long类型的注意点:在值后面加大写L,可以加l
float类型 注意点:值后面要加大写或者小写f
9:变量的注意事项(非常非常非常重要)
(1)同一作用域不能使用相同的变量名
作用域:注意指的是最近的大括号 强调!!
(2)变量在使用前必须先初始化(赋值)
如果不使用,也可以定义;
(3)一条语句可以定义多个变量
10:隐式类型转换(重要)
取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
注意:不只是byte这种数据类型才会,byte shot char 和int数据类型运算的时候,都会做类型提升
11:强制类型转换(重要)
int a = 10;
byte b = 20;
short c = 30;
b = (byte)(a+b);
注意:书写强制类型转换时候,记得要先把要运算的数据用小括号括起来,然后在前面加上强制类型转换的数据类型,这个也需要用小括号括起来
强制类型转换格式:
小的数据类型 变量名 = (小的数据类型)大的数据类型;
强制类型转换:不推荐
12:面试题(重要)
class Test1_DataTypeConversion {
public static void main(String[] args) {
//面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
//byte b3 = b1 + b2;
/*
从两方面
1,byte与byte(或short,char)进行运算的时候会提升为int,两个int类型相加的结果也是int类型
2,b1和b2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围
*/
//System.out.println(b3);
//byte b4 = 3 + 4; //java编译器有常量优化机制
byte b4 = 7;
System.out.println(b4);
}
}
常量优化机制: 在java内存里面有一个小小的常量池区域,里面存放着-128~127之间的数,如果你在赋值一个数给byte数据类型的时候,它会先去常量池里面找有没有这个数,如果有,编译通过,如果没有,编译不通过!
13:float 和long类型谁大?(了解)
结论:float 大于 long
原因:就因为底层存储结构不一样
byte,short,char < int < long < float < double
14:ASCII码表
大写字母和小写字母相差的32
/*
关于大小写字母转换的案例
*/
class Demo01 {
public static void main(String[] args) {
//注意:如果我们需要将大写转成小写的,只需要加32即可
System.out.println((char)('A'+32));
}
}
15:字符串运算(非常重要)
class Demo4_DataTypeConversion {
public static void main(String[] args) {
//System.out.println('a' + 1); //98,因为有ASCII码表,a字符对应的是int类型的97
//System.out.println((char)('a' + 1));
System.out.println("hello"+'a'+1); //任何数据类型用+与字符串相连接都会产生新的字符串
System.out.println('a'+1+"hello");
System.out.println(" 5 + 5 = " + (5 + 5));
}
}
总结:任意数据只要和字符串做运算都会变成新的字符串
16:关于char的数据类型
char数据类型的取值范围是多少?
答:0-65535
Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
答:因为一个中文占用的是两个字节
算术运算符(非常重要)
⦁ 算术运算符有哪些?
+ - * / % ++ –
⦁ 使用算术运算符有哪些注意事项?
+ : 正号 加法运算 字符串连接符
/ : 整数运算,得出来都是整数,没有余数
%:求模,取余数 10 % 3 = 1; 10 % 2 = 0
需求:数789,让你求出 个位上的数,十位上的数,百位上的数
789 % 10 —>得出来是9
789 / 10 —>78 % 10 —>得出8
789 / 100—>得到的就是7
面试题(理解)
class Test1_Operator {
public static void main(String[] args) {
//第一题
/*int a = 10;
int b = 10;
int c = 10;
a = b++; //a = 10 ,b = 11
c = --a; //a = 9, c = 9
b = ++a; //a = 10, b = 10
a = c--; //a = 9, c = 8
System.out.println("a = " + a + ",b = " + b + ",c = " + c);*/
//第二题
/*int x = 4;
// 4 + 6+ 60
int y = (x++)+(++x)+(x*10);
System.out.println("x = " + x + ",y = " + y);*/
//第三题问哪句会报错,为什么
byte b = 10;
//b++; //b = (byte)(b + 1)
b = b + 1; //当byte与int进行混合运算的时候,会提升为int类型,两个int相加的结果还是int,赋值给byte会损失精度
System.out.println("b = " + b);
}
}
赋值运算符(重要)
= :基本赋值运算符
+= , -= *= /= %=
关系运算符(非常非常非常重要)
< == >= <= !=
特点:结果得出来的都是布尔类型,boolean 类型