欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA学习 Day4

程序员文章站 2022-07-14 17:29:20
...

回顾

数组: 3种初始化方式
长度length, 长度不可变
引用类型 -> 堆
访问, index: 0~length-1
内存图: 非常重要
方法:
修饰词 返回值类型 名字(参数列表) {方法体}
方法签名: 方法名+参数列表
返回值: return
调用: 执行方法体
JVM:
方法区: 类加载后的信息
栈: 临时变量\局部变量
堆: 引用的数据

方法参数: 基本数据类型, 就是传递的是值
引用类型, 传递的是引用-地址

1.面向对象

OOP Object Oriented Programming
一切皆对象, Java操作的基本单位就是对象
类/类型: 所有同种对象共同的特征和行为, 抽象出来成为类
对象: 符合类的实例化个体

玩家特征: - 属性/成员变量
玩家名 帐号
玩家行为: - 成员方法
打开steam 玩游戏
以上抽象出一个概念: 类 - 玩家, 实体类
对象: 符合类的特征的独立个体
类和对象的关系: 先定义/声明 类, 然后再创建对象

class: 类 类型 和int功能一样
使用对象的步骤:
1.必须先有类
class Player {
成员变量 username account
成员方法
}
2.才能创建对象 - main - 方法 - 存在于类中
Player p = new Player();
3.有了对象, 对象包含了成员变量(username和account)和成员方法
使用: 用 . 来调用的

局部变量和成员变量的区别
1.声明位置
局部变量: 方法中
成员变量: 类中
2.初始化
局部变量: 使用前必须初始化
成员变量: 可以初始化, 如果没有初始化, 会有默认初始值
3.个数
局部变量: 声明个数
成员变量: 由对象决定, 有几个对象就有几个成员变量
4.内存中的位置
第一次使用类[创建类的对象]之前, 会先将类进行加载
局部变量: 方法栈中, 方法结束, 局部变量消失
成员变量: 跟对象一起, 在堆中

2.方法重载

方法名一样, 参数列表不一样的几个方法
跟返回值类型无关
举例: println print
参数列表不一样的情况: 个数不同\类型不同\顺序不同
    (int a)
    (double d)
    (int a, int b)
    (int b, int a) ×
    (int a, float b)
    (float b, int a)
public class Overload {
    public static void main(String[]  args){
        Overload k = new Overload();  // 创建对象 - 引用类型
        // 使用对象的成员方法
        k.game("1");
        k.game("我", "怪物猎人");
        k.play(1000);
        k.play(0, (double)100000);
        k.play( 11110.1, 1);
    }
    void game(String b, String a){
        System.out.println(b + "正在玩" + a);
    }//成员方法
    void game(String a){
        System.out.println("打开steam");
    }
    void play(int a){
        System.out.println("游玩时间" + a + "小时");
    }
    void play(int a, double b){
        System.out.println(a + "号玩家分数为" + b);
    }
    void play(double a, int b){
        System.out.println(a + "分数为第" + b + "名");
    }
    int pay(int a){
        a = a * 10;
        return a;
    }
}

3.构造方法/构造器:

目的: 为了给成员变量初始化
特点: 方法名要和类名一致
没有返回值类型
构造方法可以重载
当类中没有定义构造方法时, 编译器会默认添加无参构造方法

4.this

this:
表示当前对象 - 这个对象
哪个对象调用方法, 就表示哪个对象
this可以调用自己的成员变量, 当成员变量和临时变量重名时, this不能省
this也可以调用自己的成员方法, this可以省略
this也可以调用自己的构造方法, this(参数), this不能省
this(参数);只能放在构造方法的第一行

public class Maincx {
    public static void main(String[] args){
        Game a = new Game();
        Game b = new Game("怪物猎人世界", 375, 1, "multiplayer act", new Player("hzt", "1315782936"));
        Game s = new Game("黎明杀机", 69, 2, "confrontation", new Player("hzt", "1315782936"));

        System.out.println(s);
    }
}

// 1.定义类
public class Player {
    // 2.定义成员变量
    String username;
    String account;
    // 3.定义有参构成方法
    Player(String username, String account){
        this.username = username;
        this.account = account;
    }
}
public class Game {
    String name;
    int price, number;
    String type;
    void play(String username ,String name){
        System.out.println(username + "正在玩" + name);
    }
    //构造方法名与类名相同
    Game(){
        this("杀戮尖塔", 24, 3, "card", new Player("hzt", "1315782936"));
        //使用空参构造方法调用有参构造方法,空参有参可以互相调用但不能同时调用
        //如果自定义的了构造方法,那么默认加的空参构造方法需要手动写出
    }
    //用于给类的属性赋值
    Game(String name, int price, int number, String type, Player p){
        this.name = name; //this指当前对象,用于优化可读性
        this.price = price;
        this.number = number;
        this.type = type;

        play(p.username, this.name);
    }
}

NullPointerException: 空指针异常
产生原因: 调用了null空值得 成员变量 或者 方法

引用类型的数组
使用步骤:
1.给数组初始化
Student[] ss = new Student[5]; // 默认值都是null
2.给数组元素初始化
ss[0] = new Student();
ss[1] = new Student();

3.如果直接给ss[index].属性赋值会导致空指针异常,原因是ss[index]为引用变量默认值为null

5.命名规则:

1.只能出现:英文 + 数字 + _ + $
2.不能以数字开头
3.变量名:可读性好、首字母小写、第二个单词开始首字母大写
4.包名:全部小写,域名倒写
	www.baidu.com
	com.baidu.zhidao.xx.xx
	com.baidu.baike.xx.xx
5.方法名: 首字母小写、第二个单词开始首字母大写 - 驼峰命名法
         长度不限, 但是一定要可读性好
6.类名: 驼峰命名法, 首字母大写
       System Scanner Math Arrays

上一篇: Day4 作业

下一篇: java学习day4