一、二进制(C类)
二进制,是计算技术中广泛采用的一种数制,由德国数理哲学大师莱布尼茨于1679年发明。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”。
数字计算机只能识别和处理由‘0’.‘1’符号串组成的代码。其运算模式正是二进制。
二、二进制和十六进制的转换(C类)
二进制、十进制数和十六进制的对应
| 十进制数 | 二进制 | 十六进制 |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 1 | 1 |
| 2 | 10 | 2 |
| 3 | 11 | 3 |
| 4 | 100 | 4 |
| 5 | 101 | 5 |
| 6 | 110 | 6 |
| 7 | 111 | 7 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | a |
| 11 | 1011 | b |
| 12 | 1100 | c |
| 13 | 1101 | d |
| 14 | 1110 | e |
| 15 | 1111 | f |
十进制转二进制
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
十进制数29转成二进制就是:11101
二进制转十进制
二进制转十进制采用“权相加法”。
三、注释(A类)
注释不会出现在字节码文件中,即Java编译器编译时会跳过注释语句。
- 单行注释
单行注释使//开头。
- 多行注释
多行注释以/*开头以*/结尾。注意,多行注释不能嵌套使用。
- 文档注释
文档注释以/**开头以*/结尾,注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)
例子:
/** * 这是文档注释!主要用于开发环境:IDEA、eclispe、VScode都可以用。 * 我的第一个Java程序! * @author WYMRSCX * @version 1.0 */ public class Welcome{ //这里是单行注释。main()方法是程序的入口。 public static void main(String[] /*行内注释:arguments是单词参数的缩写 */args){ System.out.println("要说技术哪家强,"); System.out.println("当属中国尚学堂。"); System.out.println("学堂一支穿云箭,"); System.out.println("万水千山来相见。"); } /* 我是多行注释。 我是多行注释。 我是多行注释。 */ }四、标识符和关键字(A类)
标识符
标识符是用来给变量、类、方法以及包进行命名的。4大规则:
- 必须以字母、下划线_、美元符号$开头。
- 其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
- 大小写敏感,且长度无限制。
- 不可以是Java的关键字。
标识符的使用规范
- 表示类名的标识符:每个单词的首字母大写,如
Man,GoodMan- 表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为“驼峰原则”,如
eat(),eatFood()
Java不采用ASCII字符集,而是采用Unicode字符集。因此,这里字母的含义不仅仅是英文,还包括汉字等等。但是不建议大家使用汉字来定义标识符!
【示例4-1】合法的标识符
int a = 3; int _123 = 3; int $12aa = 3; int 变量1 = 55; //不建议使用中文命名的标识符【示例4-2】不合法的标识符
int 1a = 3; //不能用数字开头 int a# = 3; //不能包含#这样的特殊字符 int int = 3; //不能使用关键字关键字/保留字
Java关键字是Java语言保留供内部使用的,如class用于定义类。 我们不能使用关键字作为变量名或方法名。
菜鸟雷区
出于应试教育的惯性思维,很多新手很可能去背上面的单词,从实战思维出发,我们不需要刻意去记!随着学习的深入,自然就非常熟悉了。
五、变量(A类)
变量的本质
- 变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。
- 可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。
- Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,
int a=3;表示a变量的空间大小为4个字节。
变量的声明
不同数据类型的常量会在内存中分配不同的空间。
double salary; //8个字节大小 long earthPopulation; //8个字节大小 int age; //4个字节大小【示例5-1】声明变量和初始化
int age = 18; double e = 2.718281828; int i ,j; // 同一行可定义多个变量,两个变量的数据类型都是int【示例5-2】试运行
public class TestVariable{ public static void main(String[] args){ int age =18; int b; System.out.println(age); System.out.println(b); } }运行:
报错:可能尚未初始化变量b
System.out.println(b);
^
public class TestVariable{ public static void main(String[] args){ int age = 18; int b; //只是声明了变量b,没有初始化;使用前,必须初始化; int x = 0, y = 0, z = 1; System.out.println(age); b = 0; //变量使用之前,必须初始化! System.out.println(b); System.out.println(z); } }运行:
18
01
变量的分类和作用域
变量有三种类型:局部变量、成员变量(也称为实例变量)和静态变量。
局部变量、成员变量、静态变量的核心区别
| 类型 | 声明位置 | 从属于 | 生命周期(作用域) |
|---|---|---|---|
| 局部变量 | 方法或语句块内部 | 方法/语句块 | 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 |
| 成员变量(实例变量) | 类内部,方法外部 | 对象 | 对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失; |
| 静态变量(类变量) | 类内部,static修饰 | 类 | 类被加载,静态变量就有效;类被卸载,静态变量消失。 |
老鸟建议
成员变量和静态变量不是目前重点,不要过多纠结理解与否。我们学习面向对象时,再重点讲解成员变量和静态变量。
局部变量(local variable)
方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕为止。局部变量在使用前必须先声明、初始化(赋初值)再使用。
成员变量(也叫实例变量 member variable)【暂不用掌握,讲面向对象再说】
方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,它会自动初始化成该类型的默认初始值。
| 实例变量的默认初始值 | |
|---|---|
| 数据类型 | 实始值 |
| int | 0 |
| double | 0.0 |
| char | ‘\u0000’ |
| boolean | false |
静态变量(类变量 static variable)【暂不用掌握,讲面向对象再说】
使用static定义。 从属于类,生命周期伴随类始终,从类加载到卸载。(注:讲完内存分析后我们再深入!先放一放这个概念!)如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值,如表 2-3所示。
六、常量(Constant)
在Java语言中,用关键字final来定义一个常量。常量一旦被初始化后不能再更改。
声明格式:
final type varName = value;【示例6-1】常量的声明及使用
public class TestConstants { public static void main(String[ ] args) { final double PI = 3.14; // PI = 3.15; //编译错误,不能再被赋值! double r = 4; double area = PI * r * r; double circle = 2 * PI * r; System.out.println("area = " + area); System.out.println("circle = " + circle); } }运行结果:
area = 50.24
circle = 25.12
为了更好的区分和表述,一般将1、2、3、’a’、’b’、true、false、helloWorld等称为字符常量,而使用final修饰的PI等称为符号常量。
老鸟建议
变量和常量命名规范
- 所有变量、方法、类名:见名知义
- 类成员变量:首字母小写和驼峰原则:
monthSalary- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:
MAX_VALUE- 类名:首字母大写和驼峰原则:
Man,GoodMan- 方法名:首字母小写和驼峰原则:
run(),runRun()