02.01_Java语言基础(常量的概述和使用)(掌握)
- A:什么是常量
- 在程序执行的过程中其值不可以发生改变
- B:Java中常量的分类
- 字面值常量
- 自定义常量(面向对象部分讲)
- C:字面值常量的分类
- 字符串常量 用双引号括起来的内容
- 整数常量 所有整数
- 小数常量 所有小数
- 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
- 布尔常量 较为特殊,只有true和false
- 空常量 null(数组部分讲解)
- D:案例演示
- 用输出语句输出各种常量。null不演示
package zang;
public class chang_liang_shu_chu {
/**
* @param args
*/
public static void main(String[] args) {
/*
* 字符串常量 用双引号括起来的内容
* 整数常量 所有整数
* 小数常量 所有小数
* 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
* 布尔常量 较为特殊,只有true和false
* 空常量 null(数组部分讲解)
*/
System.out.println("abc"); //字符串常量
System.out.println(123); //整数常量
System.out.println(123.12); //小数常量
//System.out.println('10'); //''中必须放的是单个字符,10代表的是1字符和0字符
//System.out.println(''); //''中什么也不放,也是不可以的,因为代表不了任何字符
System.out.println(' '); //代表空格字符
System.out.println(true); //boolean类只有两个值,true和false
System.out.println(false);
}
}
执行结果:
abc
123
12.3 true
false
请按任意键继续. . .
02.02_Java语言基础(进制概述和二,八,十六进制图解)(了解)
- A:什么是进制
- 进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
- 例如一周有七天,七进制,一年有十二个月,十二进制
- B:十进制的由来
- 十进制的由来是因为人类有十个手指
- C:二进制的由来
- 其实二进制来源与中国,请看史料记载
- 18世纪德国数理哲学大师莱布尼兹从他的传教士朋友鲍威特寄给他的拉丁文译本《易经》中,读到了八卦的组成结构,惊奇地发现其基本素数(0)(1),即《易经》的阴爻yao- -和__阳爻,其进位制就是二进制,并认为这是世界上数学进制中最先进的。20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,其运算模式正是二进制。它不但证明了莱布尼兹的原理是正确的,同时也证明了《易经》数理学是很了不起的。
- D:八进制的由来
- 任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。
- 所以就想把一大串缩短点,将二进制中的三位用一位表示。这三位可以取到的最大值就是7.超过7就进位了,这就是八进制。
- E:十六进制的由来
- 但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,四个二进制位最大是15,这就是十六进制。
- F:不同进制表现同一个数据的形式特点
- 进制越大,表现形式越短
02.03_Java语言基础(不同进制数据的表现形式)(掌握)
- 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:案例演示
- 输出不同进制表现100的数据。
- 0b100
- 0100
- 100
- 0x100
package zang;
public class jinzhi {
/**
* @param args
*/
public static void main(String[] args) {
/*
* 0b100
* 0100
* 100
* 0x100
*/
System.out.println(0b100); //4? 二进制表示形式前面加0b(b可以大写也可以小写)
System.out.println(0100); //64? 八进制表示形式前面加0
System.out.println(100);
System.out.println(0x100); //256? 十六进制表示形式前面加0x(可以大写也可以小写)
}
}
执行结果:
4
64
100
256
02.04_Java语言基础(任意进制到十进制的转换图解)(了解)
- A:任意进制到十进制的转换原理
- 系数:就是每一位上的数据。
- 基数:X进制,基数就是X。
- 权:在右边,从0开始编号,对应位上的编号即为该位的权。
- 结果:把系数*基数的权次幂相加即可。
- B:画图练习
- 二进制--十进制
- 八进制--十进制
- 十六进制--十进制
02.05_Java语言基础(十进制到任意进制的转换图解)(了解)
- A:十进制到任意进制的转换原理
- 除积倒取余
- B:画图练习
- 十进制--二进制
- 十进制--八进制
- 十进制--十六进制
02.06_Java语言基础(快速的进制转换法)(了解)
- A:8421码及特点
- 8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
- B:通过8421码的方式进行二进制和十进制的相互转换
- C:二进制到八进制的简易方式
- D:二进制到十六进制的简易方式
02.07_Java语言基础(原码反码补码)(了解)
- A:为什么要学习原码反码补码?
- 后面要学习强制类型转换,如果不知道有原反补会看不懂结果
- B:有符号数据表示法的几种方式
- 原码
- 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
- 通过一个字节,也就是8个二进制位表示+7和-7
- 0(符号位) 0000111 (+7)
- 1(符号位) 1000111 (-7)
- 反码
- 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
- 补码
- 正数的补码与其原码相同;负数的补码是在其反码的末位加1。
- 原码
02.08_Java语言基础(原码反码补码的练习)(了解)
- A:已知原码求补码
- 0b10110100
- B:已知补码求原码
-
0b11101110
-
02.09_Java语言基础(变量的概述及格式)(掌握)
- A:什么是变量
- 在程序执行的过程中,在某个范围内其值可以发生改变的量
- B:变量的定义格式
- 数据类型 变量名 = 变量值;
- C:为什么要定义变量
- 用来不断的存放同一类型的常量,并可以重复使用
02.10_Java语言基础(数据类型的概述和分类)(掌握)
- A:为什么有数据类型
- Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
- B:Java中数据类型的分类
- 基本数据类型
- 引用数据类型
- 面向对象部分讲解
- C:基本数据类型分类(4类8种)
- 整数型
- byte 占一个字节 -128到127
- short 占两个字
- int 占四个字节
- long 占八个字节
- 浮点型
- float 占四个字节 单精度
- double 占八个字节-1.798E308~1.798E308 双精度
- 字符型
- char 占两个字节 0~65535
- 布尔型
- boolean
- boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
- boolean
- 整数型
02.11_Java语言基础(定义不同数据类型的变量)(掌握)
- A:案例演示
- 定义不同基本数据类型的变量,并输出
- 赋值时候注意float类型,long类型
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; //占八个字节 如果long类型后面加L进行标识最好加大L(大写),因为小l太像一了
System.out.println(b); //进行输出
System.out.println(s);
System.out.println(i);
System.out.println(x);
//System.out.println(12345 + 54321l);//注意这里54321后面是小l,一定要注意
//浮点类型
float f = 12.3F; //占四个字节,float类型存储的是小数需要加F进行标识
double d = 33.4; //占八个字节 小数默认的数据类型是double,double类型后面也可以用D或d标识,但是一般不加
System.out.println(f);
System.out.println(d);
//字符类型
char c = 'a'; //占两个字节
System.out.println(c);
//布尔类型
boolean b1 = true;
boolean b2 = false;
System.out.println(b1);
System.out.println(b2);
}
}
执行结果:
10
20
30
8888888888
12.3
33.4
a
true
false
请按任意键继续. . .
02.12_Java语言基础(使用变量的注意事项)(掌握)
- A:案例演示
- a:作用域问题
- 同一个区域不能使用相同的变量名
- a:作用域问题
class data
{
public static void main(String[] args)
{
int x = 10;
int x = 20; //同一个区域使用了两个时会报错
System.out.println(x);
}
}
错误提示:
- b:初始化值问题
- 局部变量在使用之前必须赋值
class data
{
public static void main(String[] args)
{
int y; //先声明,但是使用的时候需要进行赋值,不然会报错
y = 10; //使用之前必须先赋值
System.out.println(y);
}
}
错误做法:
class data
{
public static void main(String[] args)
{
int y; //先声明,但是使用的时候需要进行赋值,不然会报错
//y = 10; //使用之前必须先赋值
System.out.println(y);
}
}
错误提示:
- c:一条语句可以定义几个变量
- int a,b,c...;
class data
{
public static void main(String[] args)
{
int a,b,c,d,e; //先声明后赋值
a = 10;
b = 20;
c = 30;
d = 40;
e = 50;
System.out.println(a);
int x = 10;
int y = 20;
int z = 30; //直接赋值,使用最常用
}
}
02.13_Java语言基础(数据类型转换之隐式转换)(掌握)
- A:案例演示
- a:int + int
- b:byte + int
class data
{
public static void main(String[] args)
{
int x = 3;
byte b = 4;
String c="o";
x = x + b; //不是同一类型的也可以进行相加,相加完是字节多的那种类型
System.out.println(x); //打印x
//System.out.println(x.getClass().getName()); //整数类型不能获取数据类型
System.out.println(c.getClass().getName()); //字符串可以获取数据类型
}
}
执行结果:
7
java.lang.String
请按任意键继续. . .
- B:Java中的默认转换规则
- 取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算 (全部转换为二进制,进行补零)
- C:画图解释byte+int类型的问题
02.14_Java语言基础(数据类型转换之强制转换)(掌握)
- A:强制转换问题(会报错)
- int a = 10;
- byte b = 20;
- b = a + b;
class data
{
public static void main(String[] args)
{
int x = 3;
byte b = 4;
b = x + b;
System.out.println(b); //打印x
}
}
执行结果:会报错,x+b变成了int型再赋值给byte型,会出现精度损失从而报错
- B:强制转换的格式(加上类型强制转换)
- b = (byte)(a + b);
class data
{
public static void main(String[] args)
{
int x = 3;
byte b = 4;
b = (byte)(x + b); //注意进行强制类型转换时,byte要用括号括起来,跟python的区别
System.out.println(b); //打印x
}
}
执行结果是: 7
- C:强制转换的注意事项
- 如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
class data
{
public static void main(String[] args)
{
int x = 126;
byte b = 4;
b = (byte)(x + b); //注意进行强制类型转换时,byte要用括号括起来,跟python的区别
System.out.println(b); //打印x
}
}
执行结果:进行相加后结果是137超出了byte的取值范围,截取二进制位后变成-126
-126
请按任意键继续. . .
分析:
//00000000 00000000 00000000 10000010 130的二进制(补码)
//取后面的八位为byte(补码)
//10000010 补码(第一位为正负标志位,第一位为1为负数,输出结果需要从补码转换到原码)
//00000001 -1求反码
//10000001 -反码(其余7为取反求原码)
//11111110 原码(结果为-126)
//这里其实就是溢出砍掉后变成-126
02.15_Java语言基础(面试题之变量相加和常量相加的区别)(掌握)
- A:案例演示
- 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
- byte b1 = 3;
- byte b2 = 4;
- byte b3 = b1 + b2;
- 从两方面去回答这个题
- b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
- byte类型的变量在进行运算的时候,会自动类型提升为int类型
class data
{
public static void main(String[] args)
{
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
System.out.println(b3);
}
}
执行出错: 把提升到int类型的数赋值给byte类型的变量是会损失精度报错的
- byte b4 = 3 + 4;
- 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
class data
{
public static void main(String[] args)
{
byte b3 = 3+4 ;
System.out.println(b3);
}
}
执行结果:
7
请按任意键继续. . .
02.16_Java语言基础(long与float的取值范围谁大谁小)(了解)
- 进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
- byte,short,char -- int -- long -- float -- double
- long: 8个字节
- float:4个字节
- IEEE754
- 4个字节是32个二进制位
- 1位是符号位
- 8位是指数位
- 00000000 11111111
- 0到255
- 1到254
- -126到127
- 23位是尾数位
- 每个指数位减去127
- A:它们底层的存储结构不同。
- B:float表示的数据范围比long的范围要大
- long:2^63-1
- float:3.410^38 > 210^38 > 28^38 = 22338 = 2*2^114 > 2^63-1
02.17_Java语言基础(字符和字符串参与运算)(掌握)
- A:案例演示
- System.out.println('a');
- System.out.println('a'+1);
- 通过看结果知道'a'的值是多少,由此引出ASCII码表
class data
{
public static void main(String[] args)
{
System.out.println('a' + 1); //98,因为有ASCII码表,a字符对应的是int类型的97
System.out.println((char)('a' + 1));
}
}
执行的结果:
98
b
请按任意键继续. . .
- B:ASCII码表的概述
- 记住三个值:
- '0' 48
- 'A' 65
- 'a' 97
- 记住三个值:
- C:案例演示
- System.out.println("hello"+'a'+1);
- System.out.println('a'+1+"hello");
- D:+在有字符串参与中被称为字符串连接符
- System.out.println("5+5="+5+5);
- System.out.println(5+5+"=5+5");
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"); //a是字符代表了97再加1是98然后跟后面的字符串相加
System.out.println("5+5=" + 5 + 5); //输出的是55,原因是被认为是字符串
System.out.println(" 5 + 5 = " + (5 + 5)); //加上括号就是5+5先进行运算
}
}
执行结果:
helloa1
98hello
5+5=55
5 + 5 = 10
请按任意键继续. . .
02.18_Java语言基础(char数据类型)(掌握)
- A:char c = 97; 0到65535
- B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
- 可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节
- 所以,Java中的字符可以存储一个中文汉字
class Demo5_Char {
public static void main(String[] args) {
char c = 'a';
System.out.println(c);
byte b = 100;
char c1 = 97; //0 - 65535
System.out.println(c1);
char c2 = 3;
char c3 = 4;
char c4 = 5;
char c5 = 6;
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
//char类型是否可以存储中文
char c6 = '中'; //单引号里只能存储一个中文 ,char是两个字节,中文汉字也是两个字节因此能够进行存储
System.out.println(c6);
}
}
执行结果:
a
a
�
�
�
�
中
请按任意键继续. . .
02.19_Java语言基础(算术运算符的基本用法)(掌握)
- A:什么是运算符
- 就是对常量和变量进行操作的符号。
- B:运算符的分类
- 算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
- C:算数运算符有哪些
- +,-,*,/,%,++,--
- D:注意事项:
- a:+号在java中有三种作用:代表正号,做加法运算,字符串的连接符
- b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
- c: / 获取的是除法操作的商,%获取的是除法操作的余数
- %运算符
- 当左边的绝对值小于右边绝对值时,结果是左边
- 当左边的绝对值等于右边或是右边的倍数时,结果是0
- 当左边的绝对值大于右边绝对值时,结果是余数
- %运算符结果的符号只和左边有关系,与右边无关
- 任何一个正整数%2结果不是0就是1可以用来当作切换条件
class Demo1_Operator { //operator 运算符
public static void main(String[] args) {
/*
* a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
* b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
* c:/获取的是除法操作的商,%获取的是除法操作的余数
* %运算符
* 当左边的绝对值小于右边绝对值时,结果是左边
* 当左边的绝对值等于右边或是右边的倍数时,结果是0
* 当左边的绝对值大于右边绝对值时,结果是余数
* %运算符结果的符号只和左边有关系,与右边无关
* 任何一个正整数%2结果不是0就是1可以用来当作切换条件
*/
System.out.println(10 / 3); //整数相除结果只能是整数
System.out.println(10 / 3.0); //如果想得到小数,把其中一个数变成小数,另一个数在运算的时候会自动类型提升
System.out.println(-5 % 5);
System.out.println(13 % -5); //求余的符号只与左边有关
}
}
执行结果:
3
3.3333333333333335
0
3
请按任意键继续. . .
02.20_Java语言基础(算术运算符++和--的用法)(掌握)
- A:++,--运算符的作用
- 自加(++)自减(--)运算
- ++:自加。对原有的数据进行+1
- --:自减。对原有的数据进行-1
- B:案例演示
- a:单独使用:
- 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
- a:单独使用:
class data
{
public static void main(String[] args)
{
//单独使用
int a = 3;
a++; //a = a + 1;
System.out.println(a);
int b=5;
++b;
System.out.println(b); ////b = b + 1;
}
}
执行结果:
4
6
请按任意键继续. . .
- b:参与运算使用:
- 放在操作数的前面,先自增或者自减,然后再参与运算。
- 放在操作数的后面,先参与运算,再自增或者自减。
放在操作数的前面
class data
{
public static void main(String[] args)
{
//参与运算使用
int a = 3;
int b;
//b = a++; //当++在变量后面的时候,会先将变量中的值取出做赋值操作,然后再自身加1
b = ++a; //当++在变量前面的时候,会先自身加1,然后在将结果赋值
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
执行结果:
a = 4
b = 4
请按任意键继续. . .
放在操作数后面
class data
{
public static void main(String[] args)
{
//参与运算使用
int a = 3;
int b;
b = a++; //当++在变量后面的时候,会先将变量中的值取出做赋值操作,然后再自身加1
//b = ++a; //当++在变量前面的时候,会先自身加1,然后在将结果赋值
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
执行结果:
a = 4
b = 3
请按任意键继续. . .
02.21_Java语言基础(算术运算符++和--的练习)(掌握)
-
A:案例演示
请分别计算出a,b,c的值?
-
int a = 10;
int b = 10;
int c = 10;a = b++; c = --a; b = ++a; a = c--;
class data
{
public static void main(String[] args)
{
int a = 10;
int b = 10;
int c = 10;
a = b++; //a=10,b=11
System.out.println(a);
System.out.println(b);
c = --a; //a=9,c=9
System.out.println(a);
System.out.println(c);
b = ++a; //a=10,b=10
System.out.println(a);
System.out.println(b);
a = c--; //a=9,c=8
System.out.println(a);
System.out.println(c);
}
}
执行的结果:
10
11
9
9
10
10
9
8
请按任意键继续. . .
-
B:案例演示
-
请分别计算出x,y的值?
int x = 4;
int y = (x++)+(++x)+(x*10);
-
class data
{
public static void main(String[] args)
{
int x = 4;
int y = (x++)+(++x)+(x*10); //4+6+60
System.out.println(y);
}
}
执行结果:
70
请按任意键继续. . .
-
C:面试题
- byte b = 10;
- b++;
- b = b + 1;
- 问哪句会报错,为什么 ,第三句报错,损失精度
class data
{
public static void main(String[] args)
{
//第三题问哪句会报错,为什么
byte b = 10;
b++; //b = (byte)(b + 1)(自动的给强制转换)
b = b + 1; //当byte与int进行混合运算的时候,会提升为int类型,两个int相加的结果还是int,赋值给byte会损失精度
System.out.println("b = " + b);
}
}
错误提示:
02.22_Java语言基础(赋值运算符的基本用法)(掌握)
- A:赋值运算符有哪些
- a:基本的赋值运算符:=
- 把=右边的数据赋值给左边。
- b:扩展的赋值运算符:+=,-=,*=,/=,%=
- += 把左边和右边做加法,然后赋值给左边。
- a:基本的赋值运算符:=
class Demo1_Operator {
public static void main(String[] args) {
//赋值运算符
int a = 3; //把右边的常量值赋值给左边的变量,左边必须是变量
a += 4; //a = a + 4; a=7
a = a + 4; //a=7+4=11
System.out.println(a);
}
}
02.23_Java语言基础(赋值运算符的面试题)(掌握)
- A:案例演示
- 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
- short s=1;s = s+1;
- short s=1;s+=1;
class Test1_Operator {
public static void main(String[] args) {
// 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
short s=1;s = s+1; //当short与int进行运算的时候,会提升为int类型,两个int类型相加的结果也是int类型
short s=1;s+=1; //s = (short)(s + 1);自动的优化
System.out.println(s);
}
}
02.24_Java语言基础(关系运算符的基本用法及其注意事项)(掌握)
- A:关系运算符有哪些(比较运算符,条件运算符)
- ==,!=,>,>=,<,<=
- 注意事项:
- 无论你的操作是简单还是复杂,结果是boolean类型。
- "=="不能写成"="。
class Demo1_Operator {
public static void main(String[] args) {
//关系运算符
//==,!=,>,>=,<,<=
System.out.println(4 == 3); //等于
System.out.println(4 != 3); //不等于
System.out.println(4 > 4);
System.out.println(4 >= 4);
System.out.println(4 < 3);
System.out.println(4 <= 3);
}
}
执行的结果:
false
true
false
true
false
false
请按任意键继续. . .