常量的概述和使用
- A:什么是常量
- 在程序执行的过程中其值不可以发生改变
- B:Java中常量的分类
- 字面值常量
- 自定义常量(面向对象部分讲)
-
C:字面值常量的分类(6种常量)
- 字符串常量 用双引号括起来的内容
- 整数常量 所有整数(无限个)
- 小数常量 所有小数
- 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
‘10’,’ab’非法的。 - 布尔常量 较为特殊,只有true和false
- 空常量 null(数组部分讲解)
-
D:案例演示
- 用输出语句输出各种常量。null不演示
|
|
进制概述和二,八,十六进制图解
- A:什么是进制
- 进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
- 例如一周有七天,七进制,一年有十二个月,十二进制
-
B:二进制的由来
- 其实二进制来源与中国,请看史料记载
- 18世纪德国数理哲学大师莱布尼兹从他的传教士朋友鲍威特寄给他的拉丁文译本《易经》中,读到了八卦的组成结构,惊奇地发现其基本素数(0)(1),即《易经》的阴爻yao- -和__阳爻,其进位制就是二进制,并认为这是世界上数学进制中最先进的。20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,其运算模式正是二进制。它不但证明了莱布尼兹的原理是正确的,同时也证明了《易经》数理学是很了不起的。
-
C:八进制的由来
- 任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。
- 所以就想把一大串缩短点,将二进制中的三位用一位表示。这三位可以取到的最大值就是7.超过7就进位了,这就是八进制。
- D:十六进制的由来
- 但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,四个二进制位最大是15,这就是十六进制。
- E:不同进制表现同一个数据的形式特点
- 进制越大,表现形式越短
不同进制数据的表现形式
二进制是所有进制的基础。8421,2的次方数。
-
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开头
-
E:案例演示
12345678910111213class Demo2JinZhi {public static void main(String[] args) {//二进制,1.7版本前面加上0b表示二进制,b大写小写都可以System.out.println( 0b100);//八进制System.out.println( 074);//十进制System.out.println( 100);//十六进制,10到15分别用a到f表示,大小写都可以System.out.println( 0x3c);// 0b1010101 052 0x52}}- 输出不同进制表现100的数据。
- 0b100 //二进制 0b开头
- 0100 //八进制 0开头
- 100 // 十进制
- 0x100 //16进制0x开头
任意进制到十进制的转换图解
- A:任意进制到十进制的转换原理
- 系数:就是每一位上的数据。
- 基数:X进制,基数就是X。
- 权:在右边,从0开始编号,对应位上的编号即为该位的权。
- 结果:把系数*基数的权次幂相加即可。
- B:画图练习
- 二进制–十进制
- 八进制–十进制
- 十六进制–十进制
注意去权次幂的时候,从0开始要数到系数的位置,从1开始的话,要少数一位。
十进制到任意进制的转换图解
快速的进制转换法
- A:8421码及特点
- 8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
- B:通过8421码的方式进行二进制和十进制的相互转换
- C:二进制到八进制的简易方式
- D:二进制到十六进制的简易方式
八进制数字 三个bit位为一组。
十六进制,四个bit位为一组。
一个字节占八个个bit位。
一个字,两个字节,16个bit位置。
原码反码补码
- A:为什么要讲解有符号数据表示法
- 后面学习数据类型的时候,要学习强制类型转换,如果不知道有原反补会看不懂结果
- B:有符号数据表示法的几种方式
- A:已知原码求补码(加一取反)
- 0b10110100
0b11001100
- 0b10110100
- B:已知补码求原码
变量的概述及格式
- A:什么是变量
- 在程序执行的过程中,在某个范围内其值可以发生改变的量(ex:数学的未知数)
- B:变量的定义格式
- 数据类型 变量名 = 变量值;
- C:为什么要定义变量
- 用来不断的存放同一类型的常量,并可以重复使用
数据类型的概述和分类
- A:为什么有数据类型
- Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间
- B:Java中数据类型的分类
- 基本数据类型
- 引用数据类型
- 面向对象部分讲解
- C:基本数据类型分类(4类8种)
- 整数型
- byte,short,int,long
- 浮点型
- float,double
- 字符型
- char
- 布尔型
- boolean
- 整数型
-
D:引用数据类型
类(class)、接口(interface)、数组([]).
|
|
定义不同数据类型的变量
- A:案例演示
- 定义不同基本数据类型的变量,并输出
- 赋值时候注意float类型,long类型
123456789101112131415161718192021222324class Demo2DateType {public static void main(String[] args) {//整数类型byte b = 100;short s = 1000;int i = 10000;long l = 123456789012345678L;//System.out.println(12345+5432l);切记 如果想标识long类型的数,超过了int的取值范围,需要在末尾//加上L,最好是大写,因为小写的太像1这个数字;//浮点类型float f = 12.3f;double d = 13.4d; //13.4后面的d可以省略,d可以是大写也可以是小写//字符类型char c1 = 'a';char c2 = '0';char c3 = '中';//字符是否可以存储中文?//可以,java是unicode编码,char类型占的两个字节,而一个中文占的也是两个字节//System.out.println(c3);//布尔类型boolean b1 = true;boolean b2 = false;}}
整型的取值范围默认是int,浮点型默认是double,所以当使用float单精度定义数据时候必须带有f,数字过于大的话,需要在末尾带有L(小写容易混淆)。
使用变量的注意事项
- A:案例演示
- a:作用域问题
- 同一个区域不能使用相同的变量名
- b:初始化值问题
- 局部变量在使用之前必须赋值
- c:一条语句可以定义几个变量
- int a,b,c…;
- a:作用域问题
|
|
数据类型转换之隐式转换
由于java中整型的数据默认是int类型,因此 short btye类型的数据和int类型的进行运算的时候,会被自动提升称为int类型。
int和long等更高精度的数据运算时,会提升成为long等更高精度的数据类型,为了确保精度。
数据类型转换之强制转换
- A:强制转换问题
- int a = 10;
- byte b = 20;
- b = a + b;
- B:强制转换的格式
- b = (byte)(a + b);
- C:强制转换的注意事项
- 如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
|
|
面试题之变量相加和常量相加的区别
- A:案例演示
- 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
- byte b1 = 3;
- byte b2 = 4;
- byte b3 = b1 + b2;
- 从两方面去回答这个题
- b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
- byte类型的变量在进行运算的时候,会自动类型提升为int类型
- byte b4 = 3 + 4;
- 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
|
|
数据类型中补充的几个小问题
- A:在定义long或者float类型的变量的时候,需要在末尾跟上L和F;
- 因为默认的数据类型是int和double
- byte和short在定义的时候,他们接收的实际上是一个int类型值,越界就会报错
-
B: Byte的值问题
- byte b1 =127;
- byte b2 =(byte)300; //损失精度
-
byte b4 =(byte)130; //损失精度,此外计算机在进行运算的时候,都是使用补码
-
byte的取值范围 -128~127;
-
C: 数据类型转换之默认转换
-
进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
-
byte,short,char – int – long – float – double
-
long: 8个字节
- float:4个字节
- IEEE754 国际制定的标准
- 4个字节是32个二进制位
- 1位是符号位 1是负数,0是正数
- 8位是指数位
- 00000000 11111111
- 0到255
- 1到254
- 每个指数位减去127
- -126到127
-
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
-
-
D: java语言中的字符char可以存储汉字吗?为什么?
- 可以的,因为java语言采用的是Unicode编码,unicode编码中每个字符占用两个字节
- 所以,java中的字符可以存储一个中文汉子。
字符和字符串参与运算
- A:案例演示
- System.out.println(‘a’); //a的acsII码表 97
- System.out.println(‘a’+1);//输出 98 提升成int类型
- System.out.println((char)(’a’+1));//强转输出 b
- System.out.println((char)(98));//强转输出 b
- System.out.println((char)(100));//强转输出 ? 只用到了127位(Unicode)
- 通过看结果知道’a’的值是多少,由此引出ASCII码表
- B:ASCII码表的概述
- 记住三个值:
- ‘0’ 48
- ‘A’ 65
- ‘a’ 97
- 记住三个值:
- C:案例演示
- 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
char数据类型
- A:char c = 97;
- B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
- A:什么是运算符
- B:运算符的分类
- C:算数运算符有哪些
- D:案例演示
- 算数运算符的基本用法
- 注意事项:
- a:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
- b:/获取的是除法操作的商,%获取的是除法操作的余数
|
|
算术运算符++和–的用法
- A:++,–运算符的作用
- 自加(++)自减(–)运算
- ++:自加。对原有的数据进行+1
- –:自减。对原有的数据进行-1
- B:案例演示
- a:单独使用:
- 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
- b:参与运算使用:
- 放在操作数的前面,先自增或者自减,然后再参与运算。
- 放在操作数的后面,先参与运算,再自增或者自减。
- 同理a–
1234567891011121314151617class Demo8Operator {public static void main(String[] args) {/*int a = 4;//a++; //a++ 相当于a = a+1//int b = a++; //如果++符号放在变量的后面,是先赋值,再自加//无论赋值,还是运算,还是打印都是先将变量里的值拿出来,然后在自身+1//System.out.println("b = " + b);System.out.println(a++);// 输出4System.out.println(a);*/ //输出 5int a = 4;++a; //a++和++a单独写没有区别//int b = ++a; //如果++符号放在变量的前面,是先自加,然后再赋值//System.out.println("b = " + b);System.out.println(a);}}
- a:单独使用:
算术运算符++和–的练习
-
A:案例演示
- 请分别计算出a,b,c的值?
-
int a = 10; int b = 10; int c = 10; a = b++; //a = 10 b = 11 c = --a; //c = 9 a = 9 b = ++a; //b = 10 a = 10 a = c--; //a = 9 c = 8
-
B:案例演示
-
请分别计算出x,y的值?
int x = 4; int y = (x++)+(++x)+(x*10);
-
代码:
|
|
赋值运算符的基本用法
- A:赋值运算符有哪些
-
B:案例演示
- 赋值运算符的基本用法
-
注意事项:
-
a:基本的赋值运算符:=
- 把=右边的数据赋值给左边。
-
b:扩展的赋值运算符:+=,-=,*=,/=,%=
- += 把左边和右边做加法,然后赋值给左边。
-
赋值运算符的面试题
- A:案例演示
- 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
- short s=1;s = s+1;
- short s=1;s+=1;
|
|