Java语言基础学习笔记
jdk相关概念
- javac.exe - 编译器,主要用于将高级Java源代码翻译成字节码文件。
- java.exe - 解释器,主要用于启动JVM对字节码文件进行解释并执行
jdk、jre、jvm之间的关系
使用文本编辑器编写Java程序流程
- 新建文本文档,将文件扩展名由xxx.txt修改为xxx.java;
- 使用记事本/Notepad++的方式打开文件,编写Java代码后进行保存;
- 启动dos窗口,并切换到.java文件所在的路径中;
- 使用javac xxx.java进行编译,生成xxx.class的字节码文件;
- 使用java xxx 进行解释执行,打印最终结果;
常用的快捷键
ctrl + s 保存 ctrl + c 复制 ctrl + v 粘贴 ctrl + a 全选 ctrl + x 剪切
ctrl + z 撤销 ctrl + f 搜索 ctrl + shift 切换输入法,使用shift进行中英文切换
windows + d 回到桌面 windows + e 打开计算机 windows + l 锁屏
windows + r 打开运行,输入cmd后回车就会启动dos窗口
windows + tab 切换任务 alt + tab 切换任务
ctrl + alt + delete 启动任务管理器
注释
- 注释用于进行代码说明,是给程序员看的文字说明,编译器会忽略注释。
- 基本分类
// 单行注释,从// 开始,到本行结束,都是注释。
/* */ 多行注释,从/* 开始,到*/结束,中间所有都是注释。
/** */ 多行/文档注释,从/**开始,到*/结束,是一种支持提取的注释。
- 多行注释不允许嵌套使用!
环境变量的基本概念
通常情况下可执行文件只能在该文件所在的路径中使用,为了使得该可执行文件可以在任意路径中使用,则需要将该文件所在的路径信息配置到环境变量Path中。
跨平台原理
Java字节码可以通过JVM翻译为具体平台能够执行的机器指令。由于Sun定义了JVM规范,而且不同的操作系统大多提供了JVM实现,才使得相同的一个字节码文件可以在不同的系统上运行,从而使Java赢得了“一次编译,到处使用”的美名。
变量的基本概念
- 当需要在程序中记录单个数据内容时,则声明一个变量即可,而声明变量的本质就是在内存中申请一个存储单元,由于在该存储单元中的数据内容可以发生改变,因此得名为“变量”。
- 由于存放的数据内容大小不一样,导致所需存储单元的大小不一样,在Java语言中使用数据类型加以描述,为了便于下次访问还需要给该变量指定一个名字,用于记录该变量对应的存储单元。
标识符的命名规则
- 由数字、字母、下划线以及$等组成,其中数字不能开头。
- 不能使用Java语言的关键字所谓关键字就是Java语言用于表示特殊含义的单词。
- 区分大小写,长度没有限制但不宜过长。
- 尽量做到见名知意,支持中文但不推荐使用
- 标识符可以给类/变量/属性/方法/包 起名字
数据类型的分类
在Java语言中数据类型主要分为两大类:- (1)基本数据类型(记住)
byte、short、int、long、float、double、boolean、char
- (2)引用数据类型(了解)
数组、类、接口、枚举、标注
进制之间的转换
- 正十进制转换为二进制的方式
a. 除2取余法,使用十进制整数不断地除以2取出余数,直到商为0时将余数逆序排序。
b. 拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面写1,否则写0
- 正二进制转换为十进制的方式
a.加权法,使用二进制中的每个数字乘以当前位的权重再累加起来。
- 负十进制转换为二进制的方式
a.先将十进制的绝对值转换为二进制,然后进行按位取反再加1。
- 负数的需要补码:按位取反,再加1 。
- 负二进制转换为十进制的方式
a.先减1再按位取反,合并为十进制整数后添加负号
单个字节表示的整数范围(重中之重)
- 在计算机中单个字节表示八位二进制位,其中最高位(最左边)代表符号位,使用0代表非负数,使用1代表负数,具体表示的整数范围如下:
- 非负数表示范围:0000 0000 ~ 0111 1111 => 0 ~ 127 => 0 ~ 2^7-1
- 负数表示范围:1000 0000 ~ 1111 1111 => -128 ~ -1 => -2^7 ~ -2^0
- 单个字节表示的整数范围是:-2^7 ~ 2^7-1,也就是-128 ~ 127.
字符类型
- Java语言中用于描述单个字符的数据类型:char类型。如:'a'、'中'等。
- 其中char类型在内存空间中占2个字节并且没有符号位,表示的范围是:0 ~ 65535,由于现实生活中很少有数据能够被单个字符描述,因此以后的开发中更多的使用由多个字符串起来组成的字符串,使用String类型加以描述,如:“hello”、“奇点”等。
要求掌握的ASCII有:'0' - 48 'A' - 65 'a' - 97 空格 - 32 换行符 - 10
字符串连接符与加法运算符之间的区分
- 只要+两边的操作数中有一个操作数是字符串类型,则该+就被当做字符串连接符处理,否则当做加法运算符处理
/* 字符串连接符与加法运算符之间的区分 */ public class ArthemicTest{ public static void main(String[] args){ // 只要+两边的操作数中有一个操作数是字符串类型,则该+就被当做字符串连接符处理,否则当做加法运算符处理 int hour = 1; int min = 1; int second = 6; System.out.println(hour + min + second); // 8 System.out.println(hour + min + second + ""); // 8 System.out.println(hour + min + "" + second); // 26 System.out.println(hour + "" + min + second); // 116 System.out.println("" + hour + min + second); // 116 } }
+=赋值运算符,自动强制类型转换
/* 赋值运算符的使用 */ public class AssignTest { public static void main(String[] args) { // 5.笔试考点1 byte b1 = 10; System.out.println("b1 = " + b1); // b1 = 10 //b1 = b1 + 2; // 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte + int 相加结果还是int类型 //b1 = b1 + (byte)2; // 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte + byte 相加结果还是int类型 编译器优化 //b1 = (byte)(b1 + 2); // 强制类型转换,将int类型转换为byte b1 += 2; // 真正等价于b1 = (byte)(b1 + 2); System.out.println("b1 = " + b1); // b1 = 12 } }
数组工具类的常用方法
错题集
面试锦囊
字符常量和字符串常量的区别
字符常量由单引号引起,字符串常量由双引号引起;
字符常量存储的是一个unicode编码的字符,字符串常量在存储在常量池中,代表一个地址值;
字符常量只占一个字节,字符串常量占若干个字节成员变量与局部变量的区别有那些?
成员变量定义在类中,局部变量定义在方法内、方法参数、代码块中;
成员变量有访问修饰符,局部变量没有访问修饰符
成员变量在创建对象后在堆中存储,局部变量随着方法被调用,在栈帧中存储,方法调用完后,销毁成员变量有默认初始值,局部变量必须初始化