1 关于Java
1.1 Java的发展简史
- Java之父——Gosling(高司令)
- 98年,Java2企业平台J2EE发布
- 99年发布J2SE(标准版)、J2EE(企业版)、J2ME(微型版)
- 04年,发布JavaSE5.0
- 09年,Oracle收购Sun
- 14年,发布JavaSE8
1.2 Java语言的特点
- 简单。丢弃了C++中的
运算符重载、多重继承等复杂概念;将引用替代指针;提供自动的垃圾回收机制,不必忧心内存管理 - 面向对象。只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制
- 安全。不支持指针,不能非法访问内存
- 跨平台。Java程序一次编译、处处可用,可移植性好。程序只需开发一次,就可以在各种安装了JVM的系统平台上运行(PS:Java程序跨平台,但JVM不跨平台,有各种版本,如Windows、Linux等)
- 支持多线程。程序中有多个任务可以并发执行
- 强类型语言。使用变量前需要声明类型
1.3 Java的关键术语
- Architecture neutral 结构中立
- Object oriented 面向对象
- Portable 可移植
- Distributed 分布式的
- High performance 高性能
- Multithreaded 多线程的
- Robust 健壮
- Dynamic 动态的
- API(Application Programming Interface) 应用程序编程接口
- Java SE(Java Platform,Standard Edition) Java平台标准版
- Java EE(Java Platform,Enterprise Edition) Java平台企业版
- Java ME(Java Platform,Micro Edition) Java平台微型版
- JVM(Java Virtual Machine) 虚拟机
- JDK(Java Development Kit) Java开发工具包
- JRE(Java Runtime Environment) Java运行环境
1.4 Java的运行平台
- Java SE (Java Platform,Standard Edition)
用于开发桌面应用 - Java EE (Java Platform,Enterprise Edition)
用于开发企业级应用,被广泛认可 - Java ME (Java Platform,Micro Edition)
用于开发移动设备上的软件,不被认可,取而代之的是使用Android 或 IOS
1.5 JDK详述
1.5.1 JDK发展史
LTS版本有 JDK 8、11、17,很多企业还在使用JDK 8
1.5.2 JDK的构成
- 开发工具(javac、java等)
- Java核心类库
- JVM(Java程序运行的地方)
PS:其中 2 和 3 构成JRE
1.5.3 Java安装目录
- bin
用于存放一些可执行程序,包含javac.exe(编译程序)、java.exe(执行程序)、jar.exe(打包工具)、javadoc.exe(文档生成工具) - db
一个小型数据库 - jre
Java运行时环境的根目录,包含JVM、运行时的类包、Java应用启动器、bin目录 - include
用于存放启动JDK所需的C头文件 - lib
用于存放Java类库或库文件 - src.zip文件
包含JDK核心类的源代码
1.6 Java源文件
- 后缀名为".java"
- 基本组成是类
- 最多只有一个public类,其他类个数不限。若源文件包含一个public类,文件名要和类名相同
- 程序执行入口是main( )方法
PS:在同一个Java源文件中,public类和main方法都是唯一的
2 基础知识
2.1 标识符命名规则
(1)标识符可由字母、数字、下划线、美元符号($)组成
(2)不能以数字开头
(3)不能以关键字命名
(4)命名时尽量见名知意
(5)包名(package)一律小写,如test
(6)常量名一律大写,单词间用下划线连接,如DAY_OF_MONTH
(7)类名和接口名单词首字母大写,如ArrayList(大驼峰)
(8)变量名和方法名采用“驼峰命名法”,如getMaxValue(小驼峰)
2.2 注释
// 单行注释
/*……*/ 多行注释
/**……*/ 文档注释
2.3 常量
- 整型
(1)十进制
(2)二进制。以0b开头,如0b01111111
(3)八进制。以0开头,0177
(4)十六进制。以0x开头,0x7F - 浮点型
(1)float。后缀为f/F,如1.3f
(2)double。后缀为d/D,如3.6d - 字符型
(1)普通字符。如’a’
(2)转义字符。如’\n’ - 字符串型。如"peace"
- 布尔型。true,false
- null型,表示对象的引用为空
2.4 变量
2.4.1 基本数据类型(4大类8种)
-
整型
(1)byte。大小:1字节(8位),取值范围:-128~127
(2)short。大小:2字节(16位),取值范围:-32768~32767
(3)int(默认类型)。大小:4字节(32位),取值范围:-21亿↗~21亿↗
(4)long(后缀:l/L)。大小:8字节(64位),取值范围:-900亿亿↗~900亿亿↗
PS:
(1)Java7开始,加前缀0b可书写二进制数,如0b1001→9
(2)Java7开始,数字可加下划线以便阅读,如1_000_000一百万 -
浮点型
(1)float(后缀:f/F)
大小:4字节(32位),有效位数:6~7位
(2)double(默认类型)
大小:8字节(64位),有效位数:15位
PS:表数形式
(1)小数
(2)指数,如1e-6 -
字符型
char。大小:2字节,取值范围:0~65535 -
布尔型
boolean,取值:true、false
2.4.2 引用数据类型
- 类(class)
- 接口(interface)
- 数组
- 枚举(enum)
- 注解(annotation)
2.5 运算符
2.5.1 逻辑运算符
- &(与)、|(或)、^(异或)
- !(非)、&&(短路与)、||(短路或)
PS:实际开发中、常用的逻辑运算符是:&& 、 || 、 !
2.5.2 位运算符
-
按位与 &
-
按位或 |
-
按位异或 ^
(1)交换律 a ^ b = b ^ a
(2)结合律 (a ^ b) ^ c = a ^ ( b ^ c)
(3)n ^ n = 0;n ^ 0 = n
(4)自反性a ^ b ^ b = a ^ 0 = a -
按位取反~
-
左移位<<
-
(有符号)右移位>>
移位时带符号,高位补符号位(正数补0,负数补1,因为数据在计算机中用补码表示) -
(无符号)右移位>>>
移位时不带符号,高位补0
tips:位运算骚操作
(1)判断奇偶数
将该数和1作&运算,值为0→偶数;值为1→奇数
(2)判断二进制某位是0/1
将该位数右移到末尾,用判断奇偶性的方法
(3)交换两个整型变量值
a = a ^ b
b = a ^ b
a = a ^ b
2.5.3 扩展赋值运算符
PS:扩展的赋值运算符隐含了强制类型转换。
2.5.4 运算符优先级
2.6 switch语句
switch(表达式)…
PS:Java的上述表达式支持byte、short、int、char、enum、String类型(C/C++仅支持char和int)
3 方法
3.1 方法的定义
修饰符 返回值类型 方法名(参数列表){
//执行语句
return 返回值;
}
PS:修饰符
1.访问权限
(1)private:当前类访问级别(访问范围仅限于本类)
(2)default:包访问级别(同一个包下的类都可以访问)
(3)protected:子类访问级别(同一个包下的其他类,以及不同包中该类的子类可以访问)
(4)public:公共访问级别(可以被所有类访问,不论是否在同一个包中)
若一个类或类的成员没有访问控制修饰符,则默认为default,访问范围仅限本包内
2.静态修饰符static
3.最终修饰符final
3.2 方法的重载
- 方法名相同,返回值和参数列表有所不同
public class MethodOverride {
public static void main(String[] args) {
System.out.println("sum1 = " + add(1, 2));
System.out.println("sum2 = " + add(1, 2, 3));
System.out.println("sum3 = " + add(1.2, 2.3));
}
// 两个整数相加
public static int add(int x, int y) {
return x + y;
}
// 三个整数相加
public static int add(int x, int y, int z) {
return x + y + z;
}
// 两个小数相加
public static double add(double x, double y) {
return x + y;
}
}
3.3 方法的递归
public class Demo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.println("1+2+……+" + n +" = " + sum(n));
}
//计算1+2+……+n
public static int sum(int n) {
if(n == 1) return 1; //递归出口
return n + sum(n-1); //子问题
}
}
4 数组
4.1 一维数组的定义
方式一:
int[] arr = new int[4]; //定义可以存储4个整数的数组,自动初始化为0
方式二:
int [] arr = new int[]{1, 2, 3, 4}; //动态分配内存并初始化
方式三:
int [] arr = {1, 2, 3, 4}; //静态初始化
4.2 二维数组的定义
方式一:
int [][] arr = new int[3][4]; //定义一个3行4列的二维数组
方式二:
int [][] arr = new int[3][]; //定义一个3行的二维数组,列数不定
方式三:
int [][] arr = {{1, 2}, {3, 4, 5}, {6, 7, 8, 9, }}; //定义一个二维数组并初始化
更多推荐
《Java基础入门》笔记——01 Java初步
发布评论