2.1 Java语言基础(常量的概述和使用)
A:什么是常量
在程序执行的过程中其值不可以发生改变
B:Java中常量的分类
字面值常量
自定义常量(面向对象部分讲)
C:字面值常量的分类(6种常量)
字符串常量:用双引号括起来的内容
整数常量:所有整数(无限个)
小数常量:所有小数
字符常量:用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
‘10’,’ab’非法的。
布尔常量较为特殊,只有true和false
空常量 null(数组部分讲解)
D:案例演示
用输出语句输出各种常量。null不演示
2.2 进制概述和二,八,十六进制图解
A.进制:进位制,对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位,二进制就是逢二进一,八进制就是逢八进一,十进制就是逢十进一,十六进制是逢十六进一。
B.十进制的由来
C.二进制的由来
18世纪德国数理哲学大师莱布尼兹从他的传教士朋友鲍威特寄给他的拉丁文译本《易经》中,读到了八卦的组成结构,惊奇地发现其基本素数(0)(1),即《易经》的阴爻- -和__阳爻,其进位制就是二进制,并认为这是世界上数学进制中最先进的。
20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,其运算模式正是二进制。它不但证明了莱布尼兹的原理是正确的,同时也证明了《易经》数理学是很了不起的。
D:八进制的由来
任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。
所以就想把一大串缩短点,将二进制中的三位用一位表示。这三位可以取到的最大值就是7.超过7就进位了,这就是八进制。
E:十六进制的由来
但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,四个二进制位最大是15,这就是十六进制。
F:不同进制表现同一个数据的形式特点
不同进制的表现形式
进制越大,表现形式越短。
2.3 不同进制数据的表现形式
A:二进制的数据表现形式
由0,1组成。以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了)
B:八进制的数据表现形式
由0,1,…7组成。以0开头
C:十进制的数据表现形式
由0,1,…9组成。整数默认是十进制的
D:十六进制的数据表现形式
由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头
2.4 任意进制到十进制的转换图解
A:任意进制到十进制的转换原理
系数:就是每一位上的数据。
基数:X进制,基数就是X。
权:在右边,从0开始编号,对应位上的编号即为该位的权。
结果:把系数*基数的权次幂相加即可。
进制互相转换原理图
注意去权次幂的时候,从0开始要数到系数的位置,从1开始的话,要少数一位。
2.5 十进制转任意进制图解
A:十进制到任意进制的转换原理
除积倒取余
B:画图练习
2.6 快速的进制转换法
A:8421码及特点
8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
B:通过8421码的方式进行二进制和十进制的相互转换
C:二进制到八进制的简易方式
D:二进制到十六进制的简易方式
‘’
八进制数字 三个bit位为一组。
十六进制,四个bit位为一组。
一个字节占八个个bit位。
一个字,两个字节,16个bit位置。
2.7 原码反码补码
A:为什么要讲解有符号数据表示法
后面学习数据类型的时候,要学习强制类型转换,如果不知道有原反补会看不懂结果
B:有符号数据表示法的几种方式
原码
就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
通过一个字节,也就是8个二进制位表示+7和-7
0(符号位)0000111
1(符号位)0000111
反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码
正数的补码与其原码相同;负数的补码是在其反码的末位加1。
2.8 原码反码补码练习
A:已知原码求补码(加一取反)
0b10110100
0b11001100
B:已知补码求原码
0b11101110 (减1取反)
ob10010010
2.9 变量的概述及格式
A:什么是变量
在程序执行的过程中,在某个范围内其值可以发生改变的量(ex:数学的未知数)
B:变量的定义格式
数据类型 变量名 = 变量值;
C:为什么要定义变量
用来不断的存放同一类型的常量,并可以重复使用
2.10 数据类型的概述及分类
A:为什么有数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间
B:Java中数据类型的分类
- 基本数据类型
- 引用数据类型
- 面向对象部分讲解
C:基本数据类型分类(4类8种)
2.11 定义不同数据类型的变量
public class Demo1_DataType { //DataType数据类型
public static void main(String args[]) {
//整数类型
byte b=10; //占一个字节,-128-127
short s=20; //占两个字节
int i=30; //占四个字节,整数默认的数据类型就是int型
long x=8888888888L;//占8个字节,如果long类型后面加L进行标识,组好加大L,因为小L太像1了。
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(x);
//浮点类型
float f=12.3f;//占4个字节,
double d=33.4;//占8个字节,小数默认的数据类型是double类型
System.out.println(f);
System.out.println(d);
//字符类型
char c='a';//占2个字节
System.out.println(c);
//布尔类型
boolean b1=true;
boolean b2=false;
System.out.println(b1);
System.out.println(b2);
}
}
2.12 使用变量的注意事项
A:案例演示
a:作用域问题
同一个区域不能使用相同的变量名
b:初始化值问题
局部变量在使用之前必须赋值
c:一条语句可以定义几个变量
int a,b,c…;
2.13 数据类型转换之隐式转换
A:案例演示
a:int + int
b:byte + int 的结果分别用byte和int类型接收,看效果
B:Java中的默认转换规则
由于java中整型的数据默认是int类型,因此 short btye类型的数据和int类型的进行运算的时候,会被自动提升称为int类型。
int和long等更高精度的数据运算时,会提升成为long等更高精度的数据类型,为了确保精度。
//数据类型转换之隐式转换
int x=3;
byte b=4;
x=x+b;
System.out.println(x);
2.14 数据类型转换之强制类型转换
A:强制转换问题
int a = 10;
byte b = 20;
b = a + b;
B:强制转换的格式
b = (byte)(a + b);
C:强制转换的注意事项
如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
byte b=(byte)(126+4);
System.out.println(b);//-126
2.15 变量相加和常量相加的区别
A:案例演示
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;(报错)
从两方面去回答这个题
b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
byte类型的变量在进行运算的时候,会自动类型提升为int类型 ,所相当于把一个int的值给了byte,编译报错
byte b4 = 3 + 4;(没问题)
3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
2.16 long和float的取值范围谁大谁小
进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char – int – long – float – double
long: 8个字节
float:4个字节
4个字节是32个二进制位
1位是符号位 1是负数,0是正数
23位是尾数位(无限接近1)
A:它们底层的存储结构不同。
B:float表示的数据范围比long的范围要大
long:2^63-1
float:3.410^38 > 210^38 > 28^38 = 22^3^38 = 2*2^114 > 2^63-1
2.17 字符和字符串的参与运算
A.System.out.println('a'+1);//98,因为有ascii码表,a字符对应的是ascll的97
B:ASCII码表概述
System.out.println(“hello”+’a’+1);//输出:helloa1 任何数据用+与字符串连接最后都会产生新的字符串
System.out.println(‘a’+1+”hello”);//输出: 98 hello
D:+在有字符串参与中被称为字符串连接符
System.out.println(“5+5=”+5+5);//输出 5+5=55
System.out.println(5+5+”=5+5”);//输出:10=5+5
2.18 char数据类型
A:char c = 97;
B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。
所以,Java中的字符可以存储一个中文汉字
2.19 算术运算符的基本用法
A:什么是算术运算符
对常量和变量法进行操作的符号
B:运算符的分类
算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
C:算术运算符有哪些
System.ou.println(10/3);//整数相除结果只能是整数
System.ou.println(10/3.0);//如果想得到小数,把其中一个数变成小数
取模运算就是取余数
System.out.println(12 % 5);
如果左边绝对值小于右边就是本身
System.out.println(-3 % 5);
如果左边绝对值是右边的倍数时,结果为0
System.out.println(-10 % 5);
如果左边的绝对值大于右边,结果是余数,符号取决于左边,右边忽略不计
System.out.println(13 % -5);
一个数模与2结果要么是0,要么是1,可以用来切换条件
2.20 算术运算符++和—的用法
A:++,––运算符的作用
++:自加。对原有的数据进行+1
- –:自减。对原有的数据进行-1
a:单独使用:
放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
b:参与运算使用:
放在操作数的前面,先自增或者自减,然后再参与运算。
放在操作数的后面,先参与运算,再自增或者自减。
int a = 4;
a++; a++ 相当于a = a+1
//如果++符号放在变量的后面,是先赋值,再自加
int b = a++;
//无论赋值,还是运算,还是打印都是先将变量里的值拿出来,然后在自身+1
//System.out.println("b = " + b);
System.out.println(a++);//输出4
System.out.println(a);*///输出 5
2.21 赋值运算符的基本用法
a:基本的赋值运算符:=
把=右边的数据赋值给左边。
b:扩展的赋值运算符:+=,-=,*=,/=,%=
+= 把左边和右边做加法,然后赋值给左边。
Int a=3;//把右边的常量值赋值给左边的变量,左边必须是变量
2.22 关系运算符的基本用法及其注意事项
A.关系运算符有哪些(比较运算符,条件运算符)
==,!=,>,>=,<,<=
注意事项:无论你的操作是简单海曙复杂,结果是boolean类型
“==”不能写成“=”