02.01 关键字的概述和使用
关键字概述:被Java语言赋予特定含义的单词
关键字特点:组成关键字的字母全部小写
关键字注意事项:goto和const作为保留字存在,目前并不使用,类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观
保留字:在JDK的新版本中可能提升为关键字
02.02 标识符的概述和组成规则
标识符概述:就是给类,接口,方法,变量等起名字时使用的字符序列
组成规则:英文大小写字母、数字字符、$和_
注意事项:
1.不能以数字开头
2.不能是Java中的关键字
3.严格区分大小写
02.03 标识符中常见的命名规则
常见命名规则要求:见名知意
包:全部小写,多级包时用.隔开
类或者接口:一个单词时首字母大写,多个单词时每个单词的首字母大写
方法和变量:一个单词时首字母小写,多个单词时从第二个单词开始每个首字母大写
常量:全部大写,多个单词用_隔开
02.04注释概述及其分类
注释概述:用于解释说明程序的文字
Java中注释分类格式
单行注释:格式: // 注释文字
多行注释:格式: /* 注释文字 */
文档注释:格式:/** 注释文字 */
1.对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
2.对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
02.05 HelloWorld案例加入注释版
例:
1 /* 2 需求:写一个程序,在控制台输出HelloWorld 3 分析: 4 1.写一个java程序,首先定义类。 5 2.程序要想能够被jvm调用,必须定义main方法。 6 3.程序要想有输出结果,必须用输出语句。 7 8 实现: 9 1.定义类用的是class关键字,后面跟的是类名 10 2.main方法基本格式:public static void main(String[] args) 11 3.输出语句基本格式:System.out.println("helloworld"); 12 13 */ 14 //helloworld案例 15 class Demo 16 { 17 //main方法 18 public static void main(String[] args) 19 { 20 //输出语句 21 System.out.println("helloworld"); 22 } 23 }
02.06 注释的作用
1.解释说明程序,提高程序的阅读性
2.可以帮助我们调试程序
02.07 常量的概述和使用
常量概述:在程序执行的过程中其值不可以发生改变
Java中常量分类:字面值常量和自定义常量
字面值常量:
1.字符串常量:用双引号括起来的内容 例: "helloworld"
2.整数常量: 所有整数 例:12,23
3.小数常量: 所有小数 例:12.34,56.78
4.字符常量: 用单引号括起来的内容 例: 'a'、'A'、'0'
5.布尔常量: 只有true和false两个值
6.空常量:null
02.08 进制概述以及二进制,八进制,十六进制
Java针对整数常量提供了4种表现形式:二进制、八进制、十进制、十六进制
进制概述:进制就是进位制,是人们规定的一种进位方法。
对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。
二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
换算:
1byte(字节) = 8 bit(二进制位)
1K = 1024byte
规律,进制越大,表现形式越短。
02.09 不同进制数据的表现形式
二进制:0、1,满2进1,用0b开头表示
八进制:0~7,满8进1,用0开头表示
十进制:0~9,满10进1,整数默认是十进制的
十六进制:0~9、A~F,满16进1,用0x开头表示
任何数据在计算机中都是以二进制的形式存在的
02.10 任意进制到十进制的转换
二进制:110 转为十进制:1*22 + 1*21 + 1*20 = 6
八进制:110 转为十进制:1*82 + 1*81 + 1*80 = 72
十六进制:110 转为十进制:1*162 + 1*161 + 1*160 = 272
02.11 任意进制到十进制的练习
0b10101 转为十进制:1*24 + 0*23 + 1*22 + 0*21 + 1*20 = 21
0123 转为十进制:1*82 + 2*81 + 3*80 = 83
0x3C 转为十进制:3*161 + 12*160 = 60
02.12 十进制到任意进制的转换
十进制:56 转为二进制:
56 / 2 = 28...0
28 / 2 = 14...0
14 / 2 = 7 ...0
7 / 2 = 3 ...1
3 / 2 = 1 ...1
1 / 2 = 0 ...1
将余数从下到上组合,即0b 111000
十进制:56 转为八进制:
56 / 8 = 7...0
7 / 8 = 0...7
将余数从下到上组合,即0 70
十进制:56 转为十六进制:
56 / 16 = 3...8
3 / 16 = 0...3
将余数从下到上组合,即0x 38
02.13 十进制到任意进制的练习
将十进制的52分别转为二进制、八进制、十六进制
十进制:52 转为二进制:0b 110100
52 / 2 = 26...0
26 / 2 = 13...0
13 / 2 = 6 ...1
6 / 2 = 3 ...0
3 / 2 = 1 ...1
1 / 2 = 0 ...1
十进制:52 转为八进制:0 64
52 / 8 = 6...4
6 / 8 = 0...6
十进制:52 转为十六进制:0x 34
52 / 16 = 3...4
3 / 16 = 0...3
02.14 快速的进制转换法
十进制和二进制的快速转换
8421码:
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
例:
100转成二进制:0b 01100100
101101转成十进制:32+8+4+1 = 45
二进制和八进制,十六进制转换
1.以十进制作为桥梁
2.二进制转八进制:二进制转八进制从低位到高位每三位一组,不足高位补零
例:100100=(100)(100)=0 44
3.二进制转十六进制:二进制转十六进制从低位到高位每四位一组,不足高位补零
例:100100=(0010)(0100)=0x 24
02.15 原码反码补码
有符号数据表示法:在计算机内,有符号数有3种表示法:原码、反码和补码。
所有数据的运算都是采用补码进行的。
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
例:
7的原码:0 0000111
7的反码:0 0000111
7的补码:0 0000111
-7的原码:1 0000111
-7的反码:1 1111000(在原码的基础上除符号位按位取反)
-7的补码:1 1111001(反码末位加1)
02.16 原码反码补码的练习
已知某数的原码为10110100,求其补码和反码
原码:1 0110100
反码:1 1001011
补码:1 1001100
已知某数的补码为11101110,求其原码
补码:1 1101110
反码:1 1101101(补码末位减1)
原码:1 0010010(按位取反)
02.17 变量的概述及格式
变量概述:在程序执行的过程中,其值在某个范围内可以发生改变的量
变量定义格式:数据类型变量名 = 初始化值;
02.18 数据类型的概述和分类
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
02.19 定义不同数据类型的变量
例:
1 //定义一个字节变量 2 byte b = 10; 3 4 //定义一个短整型变量 5 short s = 100; 6 7 //定义一个整型变量 8 int i = 1000; 9 10 //定义一个长整型变量,后缀加l或L标记 11 long l = 1000000000000L; 12 13 //定义一个浮点变量,单精度浮点数后缀加f或F标记 14 float f = 12.34F; 15 16 //定义字符变量 17 char ch = 'a'; 18 19 //定义布尔变量 20 boolean flag = true;
02.20 使用变量的注意事项
使用变量注意事项:
作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
初始化值:没有初始化值不能直接使用
在一行上建议只定义一个变量,可以定义多个,但是不建议
02.21 数据类型转换之默认转换
boolean类型不能转换为其他的数据类型
默认转换:byte,short,char→int→long→float→double
byte,short,char相互之间不转换,他们参与运算首先转换为int类型
02.22 不同数据类型变量参与运算解释
例:
1 byte a = 3; 2 int b = 4; 3 byte c = a + b;//错误 4 int d = a + b; //正确
解释:byte类型的数据参与运算会被默认提升为int 型,a + b的结果为int型,不能赋值给byte型的c
02.23 数据类型转换之强制转换
强制转换
目标类型变量名=(目标类型)(被转换的数据);
例:
1 byte a = 3; 2 int b = 4; 3 byte c = (byte)(a + b);
上条语句表示将a + b的结果int型的前三个字节抛弃,保留最后一个字节赋给c
02.24 强制转换的思考题
1.下面的赋值有没有问题
double d = 12.345;
float f = d;
答:有问题,不能将double类型的d赋给float型的f。
需强制转换:float f = (float)d;
2.下面的定义有没有区别?
float f1 = (float)12.345;
float f2 = 12.345F;
答:有区别,f1是通过double类型强转到float类型。而f2本身就是float类型。
02.25 变量相加和常量相加的区别面试题
byte b1 = 3,b2 = 4,b;
b = b1 + b2;//编译失败,变量,先将类型提升,b1+b2的结果为int型
b = 3 + 4; //正确,常量,先计算结果,看是否在byte范围内,在就不报错
02.26 强制转换数据溢出后的结果计算
byte b = 130;有没有问题?如果想让赋值正确该怎么做?结果是多少?
答:有问题,130超出byte范围,可以使用强制转换byte b = (byte)130;
结果:
int型130原码:00000000 00000000 00000000 10000010
int型130补码:00000000 00000000 00000000 10000010
强制转换后丢弃高三位结果为: 10000010
补码:1 0000010
反码:1 0000001
原码:1 1111110→结果为十进制-126
02.27 字符数据参与运算
System.out.println('a'); //a
System.out.println('a'+1); //98,字符a参与运算时使用的是ASCII码表中对应的97
02.28 字符串参与运算
System.out.println('a'+1+"hello"); //98hello
System.out.println("hello"+'a'+1); //helloa1
System.out.println("5+5="+5+5); //5+5=55
System.out.println(5+5+"=5+5"); //10=5+5