第一章:命令行
- d: 直接进入d盘
- cd : 直接回到根路径
- cls: 清屏(clear screen)
- exit:退出
第二章:开发环境搭建
-
Java 虚拟机 JVM(Java Virtual Machine)
-
JRE(Java Runtime Environment):Java程序运行时环境,包括JVM和运行时所需等核心类库,可以用来运行已开发好的Java程序
-
JDK (Java Development Kit):Java开发工具包。包含了JRE和一些开发工具
-
JAVA的开发过程分成三个阶段
- 书写,后缀必须是.java
- 编译,用javac.exe(javac HelloWorld.java),会生成.class文件
- 解释,用java.exe(java HelloWorld),实际是运行的class文件
-
System.out.println(); 是l的小写,不是i的大写
JDK 安装配置
- JDK安装,路径不能有空格,不安装公共JRE
- 新建环境变量:JAVA_HOME D:\Java\jdk-9.0.4\
- 修改PATH,%JAVA_HOME%\bin
- java.util:包含Java中大量工具类、集合类等,例如Array,List,Set
- java.net:包含java网络编程相关的类和接口
- java.io:包含了Java输入、输出类和接口
- java.awt:包含用于构建图形界面的相关类和接口
第三章:标识符 : 我们定义的类或者变量方法等
-
标识符的规范
- 只能包含字母数字下划线和美元符号
- 不能数字开头
- 不能是关键字
-
建议
-
类:大驼峰式
-
变量:小驼峰
-
方法名:同变量名
第四章:数据类型、方法
-
-
常量(6类):运行期间固定不变等量
- 字符串常量:双引号引起来的部分 “abc”
- 整数常量:直接写上的数字 30
- 浮点数常量:2.5
- 字符常量:单引号引起来的单个字符 'Z' '中' '9'
- 布尔常量:true/false
- 空常量:null。 代表没有任何数据
-
基本数据类型(四类八种数据类型)
- 整数型 byte、short、int、long
- 浮点型 float、double
- 字符型 char
- 布尔型 boolean
-
引用数据类型
- 字符串
- 数组
- 类
- 接口
- lambda
-
注意事项
-
字符串不是基本类型,而是引用类型
-
浮点型可能只是一个近似值,并非精确的值
-
数据范围和字节数不一定相关,例如float数据范围比long更广泛。float是4字节,long是8字节
-
浮点数当中默认类型是double。 如果一定使用float类型,需要加一个后缀F
如果是整数,默认是int类型,如果一定要使用long类型,需要加一个后缀L。推荐使用大写字母后缀。
-
-
变量
-
格式:
- 数据类型 变量名称
- 变量名称=数据值
-
一步到位的格式
- 数据类型 变量名=变量值
-
注意事项
- 定义并赋值后才能使用
- 超出大括号的范围不能使用
public class Demo02Variable { public static void main(String[] args){ int num1; num1 = 10; System.out.println(num1); num2 = 20; System.out.println(num1); System.out.println(3.14) } } -
-
数据类型转换:当数据类型不一样时,会发生数据类型转换
-
自动类型转换(隐式)byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
-
分三种情况
- 整数型之间的转换
- 整数转为float类型
- 其他类型转为double
-
特点:代码不需要进行特殊处理,自动完成
-
规则:数据范围从小到大
-
long num=100; // int到long符合范围从小到大的要求
-
double num2 = 2.5F; // float型转double, float范围、小于double,大于long
-
-
强制类型转换(显示),不推荐使用,因为有可能产生精度损失、数据溢出
- int num = (int) 100L; // long强制转换int
-
System.out.println(1024)
-
-
方法定义和调用:
-
修饰符 + 返回值类型 + 方法名 + (参数){}
// 定义 public static void methodName(){ System.out.println('这是一个方法') } // 调用 public static void main(String[] args){ methodName(); } -
注意事项
- 方法定义不能产生嵌套包含关系
- 方法定义后调用的时候才会执行
-
-
对于byte/short/char 三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器会自动为我们补上一个(byte)(short)(char),如果右侧超过左侧,编译直接报错
-
对于void没有返回值的方法,只能单独调用,不能打印
-
对于有返回值的方法,可以单独调用、打印调用、赋值调用
-
方法的注意事项
- 方法应该定义在类当中,但不能在方法中再定义方法,不能嵌套
- 一个方法当中可以有多个return,但必须保证同时只有一个会被执行到
- 对于一个void没有返回值的方法,不能写return后边的返回值,只能写return;
-
方法的重载:多个方法的名称一样,但是参数个数不一样
- 名称相同
- 个数不同
- 参数多类型顺序不同
- 与参数名称无关、与方法的返回值类型无关
第五章:类、对象、封装、构造方法
面向对象
-
定义
- 面向过程:当需要实现一个功能的时候,每一个具体的步骤都亲力亲为,详细处理每个细节
- 面向对象:当需要事项一个功能的时候,不关心具体步骤,而是找个已经具备该功能的人,来帮我做事
-
区别
- 面向过程:强调步骤
- 面向对象:强调对象,这里的对象就是洗衣机
-
特点:将复杂事情简单化,并将我们从执行者变成指挥者。包含了三大基本特征:封装、继承、多态
类和对象
-
什么是类
-
类:是一组相关属性和行为的集合。 可以看成是一类事物的模版,使用事物的属性特征和行为特征来描述该类事物
-
属性:就是该事物的状态信息
-
行为:就是该事物能够做什么
-
举例:小猫
- 属性:大小、颜色、体重、名字
- 行为:跑、走、跳
-
-
类和对象的关系
- 类是对一类事物的描述,是抽象的
- 对象是一类事物的实例,是具体的
- 类是对象的模版,对象是类的实体
类的定义
-
事物和类的对比
- 现实世界的事物——属性:事物的状态信息。行为:事物能做什么
- Java中用class描述事物也是如此——成员变量:属性。 成员方法:行为
-
类的定义格式
public class ClassName { // 成员变量 // 成员方法 } public class Student { String name; // 成员变量,普通变量是写在方法里的 int age; // 姓名 public void eat() { // 成员方法不要写static关键字 } public void study() { } }通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用 1. 导包:也就是指出需要使用的类,在什么位置 import 包名称.类名称 对于和当前类属于同一个包的情况,可以省略导包语句不写 2. 创建格式: 类名称 对象名=new 类名称(); Student stu=new Student(); 3. 使用 使用成员变量:对象名.成员变量名 使用成员方法:对象名.成员方法名public class Student { public static void main(String[] args) { // 1. 导包 我需要使用的Student类,和当前类在同一包下,所以省略导包语句不写 // 2. 创建格式 Student stu = new Student(); // 实例化类 // 3. 使用其中的成员变量 System.out.println(stu.name); // String类型,默认null。 int类型默认0 } }
局部变量和成员变量
1. 定义的位置不一样
局部变量:在方法的内部
成员变量:在方法的外部,直接写在类中
2. 作用的范围不一样
局部变量:在只有方法当中才可以使用,出了方法不能再用
成员变量:整个类全都可以用
3. 默认值不一样
局部变量:没有默认值,如果要使用,需要手动赋值
成员变量:如果没有赋值,默认会有默认值
4. 内存位置不一样
局部变量:栈内存
成员变量:堆内存
5.生命周期不一样
局部变量:随着方法进栈诞生,随着方法出栈消失
成员变量:随着对象创建诞生,随着对象被垃圾回收而消息
public class Demo01 {
String name; // 成员变量
public void methods() {
int num = 20; // 局部变量;
System.out.println(num);
System.out.println(name);
}
public void methodB(int param) { // 方法的的参数是局部变量
// 参数在方法调用的时候,必然会被赋值
System.out.println(param);
}
面向对象三大特征:封装、继承、多态
-
封装:就是将一些细节隐藏起来,对于外界不可见
// 必须叫setXXX或者getXXX // 对于get不能有参数,返回值类型和成员变量类型对应 // 对于set不能有返回值,参数类型和成员变量对应 public class Person { String name; private int age; // 用了private后,外部就不能直接修改age的值,需要用Getter, Setter的方式 public void setAge(int num) { if(num < 100 && num >=9) { age = num; } else { System.out.println("数据不合理") } } public int getAge() { return age; } } -
当方法的局部变量和类的成员变量重名时,根据就近原则,优先使用局部变量。如果需要使用本地的成员变量,需要用this.成员变量名。通过谁调用的方法,谁就是this
-
构造方法
- 专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法
- 构造方法的名称必须和类名称完全相同
- 构造方法不要写返回值类型,连void都不行
- 如果不写,编译器会默认赠送一个构造方法,没有参数,方法体什么事情都不做
- 一旦写了至少一个构造方法,那么编译器将不再赠送