所用教材:《Java基础入门(第2版)》黑马程序员 著
电子书及源码资源:
https://pan.baidu.com/s/1T8NPJ2e-TDhi63fqomJ_5g
提取码:0516
Java之父——Gosling(高司令)98年,Java2企业平台J2EE发布99年发布J2SE(标准版)、J2EE(企业版)、J2ME(微型版)04年,发布JavaSE5.009年,Oracle收购Sun14年,发布JavaSE8 1.2 Java语言的特点
简单。丢弃了C++中的运算符重载、多重继承 等复杂概念;将引用替代指针;提供自动的垃圾回收机制,不必忧心内存管理面向对象。只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制安全。不支持指针,不能非法访问内存跨平台。Java程序跨平台,可移植性好(但JVM不跨平台);数值型所占字节固定不变,利于跨平台支持多线程。程序中有多个任务可以并发执行强类型语言。使用变量前需要声明类型
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)
用于开发小型数字电子设备上的软件
- 开发工具Java基础类库JVM
PS:其中2和3构成JRE
- bin
用于存放一些可执行程序,包含javac.exe(编译器)、java.exe(解释器)、jar.exe(打包工具)、javadoc.exe(文档生成工具)db
一个小型数据库jre
Java运行时环境的根目录,包含JVM、运行时的类包、Java应用启动器、bin目录include
用于存放启动JDK所需的C头文件lib
用于存放Java类库或库文件src.zip文件
包含JDK核心类的源代码
PATH
保存Java的编译和运行工具所在的路径CLASSPATH
保存JVM要运行的“.class”文件的路径
1.7 Java源文件
后缀名为".java"基本组成是类最多只有一个public类,其他类个数不限。若源文件包含一个public类,文件名要和类名相同程序执行入口是main( )方法 2 基础知识 2.1 标识符命名规则
(1)标识符可由字母、数字、下划线、美元符号($)组成
(2)不能以数字开头
(3)不能以关键字命名
(4)命名时尽量见名知意
(5)包名(package)一律小写,如test
(6)类名和接口名单词首字母大写,如ArrayList
(7)常量名一律大写,单词间用下划线连接,如DAY_OF_MONTH
(8)变量名和方法名采用“驼峰命名法”,如getMaxValue
// 单行注释 多行注释 文档注释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,falsenull型,表示对象的引用为空
整型
(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
类(class)接口(interface)数组枚举(enum)注解(annotation) 2.5 运算符 2.5.1 逻辑运算符
&(与)、|(或)、^(异或)!(非)、&&(短路与)、||(短路或) 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
tips:位运算骚操作
(1)判断奇偶数
将该数和1作&运算,值为0→偶数;值为1→奇数
(2)判断二进制某位是0/1
将该位数右移到末尾,用判断奇偶性的方法
(3)交换两个整型变量值
a = a ^ b b = a ^ b a = a ^ b2.6 switch语句
switch(表达式)…
PS:Java的上述表达式支持byte、short、int、char、enum、String类型(C/C++仅支持char和int)
修饰符 返回值类型 方法名(参数列表){
//执行语句
return 返回值;
}
PS:修饰符
1.访问权限
(1)private:类访问级别
(2)default:包访问级别
(3)protected:子类访问级别
(4)public:公共访问级别
若一个类或类的成员没有访问控制修饰符,则默认为default,访问范围仅限本包内
2.静态修饰符static
3.最终修饰符final
方法名相同,返回值和参数列表有所不同
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, }}; //定义一个二维数组并初始化



