java学习笔记
快捷键:
1.先选中,再 ctrl + / 注释快捷键, 再次输入就取消注释
2.选中,然后输入 tab 整体右移;选中,然后输入 shift+tab 整体左移
一、了解Java
1、Java重要特点
- Java 语言是面向对象的(oop)
- Java 语言是健壮的。Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证
- Java 语言是跨平台性的。[即: 一个编译好的.class 文件可以在多个系统下运行,这种特性称为跨平台]
- Java 语言是解释型的[了解]
解释性语言:javascript,PHP, java 编译性语言: c / c++
区别是:解释性语言,编译后的代码,不能直接被机器执行,需要解释器来执行;编译性语言, 编译后的代码, 可 以直接被机器执行, c /c++
2、Java 运行机制及运行过程
2.1、Java 语言的特点:跨平台性
2.2、Java 核心机制-Java 虚拟机[JVM java virtual machine]
- JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK中
- 对于不同的平台(系统),有不同的虚拟机。
- Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
3、什么是 JDK,JRE
3.1、JDK 基本介绍
- JDK 的全称(Java Development Kit)[ Java 开发工具包]
JDK = JRE + java 的开发工具 [java, javac,javadoc,javap 等] - JDK 是提供给 Java 开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
3.2、JRE 基本介绍
- JRE(Java Runtime Environment)[Java 运行环境]
JRE = JVM + Java 的核心类库[类] - 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序, 计算机中只需要安装JRE即可。
3.3、JDK、JRE 和 JVM 的包含关系
- JDK = JRE + 开发工具集(例如 Javac,java 编译工具等)
- JRE = JVM + Java SE 标准类库(java 核心类库)
- 如果只想运行开发好的 .class 文件只需要JRE
二、Java入门
1、第一个程序
开发一个a1.java程序,可以输出“你好”1
2
3
4
5
6
7
8
9
10
11
12
13//java快速入门,演示java开发步骤
//对代码的相关说明
//1. public class a1 表示 a1 是一个类,是一个 public 公有的类
//2. a1 { } 表示一个类的开始和结束
//3. public static void main(String[] args) 表示一个主方法,即我们程序的入口
//4. main() {} 表示方法的开始和结束
//5. System.out.println("你好"); 表示输出"你好"到屏幕
//6. ; 表示语句结束
public class a1 {
public static void main(String[] args){ //编写一个 main 方法
System.out.println("你好");
}
}
文件有中文时,如何处理
1.在文件->设置文件编码->GBK
2.需要重新保存即可
2、Java 开发注意事项和细节说明
1.Java源文件以.java 为扩展名。源文件的基本组成部分是类(class),如本类中的Hello类。
2.Java应用程序的执行入口是main()方法,它有固定的书写格式:
public static void main(String[] args) {...}
3.Java语言严格区分大小写。
4.Java方法由一条条语句构成,每个语句以";"结束。
5.大括号都是成对出现的,缺一不可。[习惯,先写{}再写代码]
6.一个源文件中最多只能有一个public类。其它类的个数不限。
7.如果源文件包含一个public类,则文件名必须按该类名命名。
8.一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在
非public类中,然后指定运行非public类,这样入口方法就是非public的main方法。
1 | //java快速入门,演示java开发步骤 |
3、Java 转义字符
在控制台,输入 tab 键,可以实现命令补全
\t :一个制表位,实现对齐的功能
\n :换行符
\\ :一个\
\" :一个"
\' :一个'
\r :一个回车
1 | //演示转义字符的使用 |
4、注释
4.1、单行注释和多行注释
1 | 单行注释 //注释文字 |
细节:1.被注释的文字,不会被 JVM(java 虚拟机)解释执行
2.多行注释里面不允许有多行注释嵌套
4.2、文档注释
1 | 文档注释 /** */ |
4.3、 Java 代码规范(基本)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15/**
* @author 小明
* @version 1.0
* @since 2.0
*/
public class Comment02 {
public static void main(String[] args) {
//选中,然后输入 tab 整体右移
// 选中,然后输入 shift+tab 整体左移
int n1 = 1 + 2;
int n2 = 5 + 10;
int n3 = 1 + 3 * 34;
}
}
三、变量
1 | 不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,比如: |
1、变量的介绍
1.1、概念
变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。
1.2、变量使用的基本步骤
- 声明变量
int a; - 赋值
a = 60; // 把 60 赋给 a
使用 System.out.println(a);
//也可以一步到位[int a = 60; 通常我们是一步完成]
1.3、变量快速入门
演示记录 人的信息的代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15public class Var02 {
public static void main(String[] args) {
//记录人的信息
int age = 30;
double score = 88.9;
char gender = '男';
String name = "king";
//输出信息(有快捷键)
System.out.println("人的信息如下:");
System.out.println(name);
System.out.println(age);
System.out.println(score);
System.out.println(gender);
}
}
变量使用注意事项
- 变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同,
比如:int 4个字节,double就是8个字节] - 该区域有自己的名称[变量名]和类型[数据类型]
- 变量必须先声明,后使用,即有顺序
- 该区域的数据/值可以在同一类型范围内不断变化
- 变量在同一个作用域内不能重名
- 变量=变量名+值+数据类型,这一点注意。变量三要素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21public class VarDetail {
public static void main(String[] args) {
//变量必须先声明,后使用, 即有顺序
int a = 50; //int类型
System.out.println(a);//输出50
// 该区域的数据/值可以在同一类型范围内不断变化
//a = "jack"; //×
a = 88; //对
System.out.println(a);//输出88
//变量在同一个作用域内不能重名
//int a = 77;//错误
}
}
class Dog{
public static void main(String[] args) {
int a = 666;//对
System.out.println(a);
}
}
2、程序中 +号的使用
- 当左右两边都是数值型时,则做加法运算
- 当左右两边有一方为字符串,则做拼接运算
- 运算顺序,是从左到右
1
2
3
4
5
6
7
8public class Plus {
public static void main(String[] args) {
System.out.println(100 + 98);//198
System.out.println("100" + 98);//10098
System.out.println(100 + 3 + "hello");//103hello
System.out.println("hello" + 100 + 3);//hello1003
}
}
3、✒️数据类型
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
String(字符串)准确来讲是一个类(class)
3.1、整数类型
Java 的整数类型就是用于存放整数值的,比如 12 , 30, 3456 等等
3.1.1、案例演示
byte n1 = 10;//1个字节
short n2 = 10;//2个字节
int n3 = 10;//4 个字节
long n4 = 10; //8 个字节
3.1.2、整型的类型
3.1.3、整型的使用细节
- Java各整数类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证java程序的可移植性。
- Java的整型常量(具体值)默认为int型,声明long型常量须后加’l’或’L’
- java程序中变量常声明为int型,除非不足以表示大数,才使用long(够用就行)
- bit:计算机中的最小存储单位。byte:计算机中基本存储单元,1byte= 8 bit
1
2
3
4
5
6
7
8
9
10
11public class IntDetail {
public static void main(String[] args) {
//Java 的整型常量(具体值)默认为 int 型,声明 long 型常量须后加‘l’或‘L’
int n1 = 1;//占4个字节
//int n2 = 1L;//对不对?不对(1L是long类型,int装不下,报错)
long n3 = 1L;//对
System.out.println();
}
}
3.2、浮点类型
Java 的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12 等等
3.2.1、浮点型的分类
1.关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
2.尾数部分可能丢失,造成精度损失(小数都是近似值)。
3.2.2、浮点型使用细节
- 与整数类型类似,Java浮点类型也有固定的范围字段长度,不受具体OS的
影响,(float4个字节,double是8个字节) - Java 的浮点型常量(具体值)默认为 double 型,声明 float 型常量,须后加‘f’或‘F’
- 浮点型常量有两种表示形式
十进制数形式:如:5.12、 512.0f 、.512 (必须有小数点)
科学计数法形式:如:5.12e2 等于[5.12 * 10的2次方],5.12e-2 等于[5.12 / 10 的2次方] - 通常情况下,应该使用 double 型,因为它比 float 型更精确。
- 浮点数使用陷阱: 2.7 和 8.1 / 3 比较
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48public class FloatDetail {
public static void main(String[] args) {
//Java 的浮点型常量(具体值)默认为 double 型,声明 float 型常量,须后加‘f’或‘F'
//float num1 = 1.1; //对不对?错误
float num2 = 1.1F; //对的
double num3 = 1.1; //对
double num4 = 1.1f; //对
//十进制数形式:如:5.12 512.0f .512 (必须有小数点)
double num5 = .123; //等价 0.123
System.out.println(num5);//输出0.123
//科学计数法形式:如:5.12e2 等于[5.12 * 10的2次方],5.12e-2 等于[5.12 / 10 的2次方]
System.out.println(5.12e2);//输出512.0(因为是浮点型,所以带小数点)
System.out.println(5.12e-2);//输出0.0512
//通常情况下,应该使用 double 型,因为它比 float 型更精确。
//[举例说明]double num9 = 2.1234567851;float num10 = 2.1234567851F;
double num9 = 2.1234567851;
float num10 = 2.1234567851F;
System.out.println(num9);
System.out.println(num10);
//浮点数使用陷阱: 2.7 和 8.1 / 3 比较
double num11 = 2.7;
double num12 = 8.1 / 3; //(数学上=2.7)
System.out.println(num11);//2.7
System.out.println(num12);//接近 2.7 的一个小数,而不是 2.7
//得到一个重要的使用点: 当我们对运算结果是小数的进行相等判断时,要小心
if( num11 == num12) {
System.out.println("num11 == num12 相等");
}//错误写法
//应该是以两个数的差值的绝对值,在某个精度范围类判断
//正确的写法 ,(先选中,再 ctrl + / 注释快捷键, 再次输入就取消注释)
if(Math.abs(num11 - num12) < 0.000001 ) {
System.out.println("差值非常小,到我的规定精度,认为相等...");
}
// 可以通过 java API 来看
System.out.println(Math.abs(num11 - num12));
//细节:如果是直接查询得的的小数或者直接赋值,是可以判断相等
}
}
3.3、Java API 文档
- API(Application Programming Interface,应用程序编程接口),是Java 提供的基本编程接口(java提供的类还有相关的方法)。
中文在线文档: - Java语言提供了大量的基础类,因此 Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法.
- Java类的组织形式[图]
- 举例说明如何使用,如ArrayList类有哪些方法
(1)按照:包—>类—>方法 查找
(2)直接索引ArrayList