Java笔记-01

84 阅读8分钟

第一章:命令行

  • 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都不行
    • 如果不写,编译器会默认赠送一个构造方法,没有参数,方法体什么事情都不做
    • 一旦写了至少一个构造方法,那么编译器将不再赠送