Day07

1.实例化对象
语法: 类名 对象名 = new 类名();
详细:
类名:自定义的类名(或者是jdk提供类) Student Scanner(首字母必须大写)
对象名:也就是给具体的对象取一个名字(通俗易懂 遵循驼峰命名)
= 赋值操作 将堆内存中地址值 赋值给栈内存中的引用(对象名)
new 在堆内存中开辟空间 会给内中属性赋默认值
类名 后面类名必须与前面类名一样

匿名对象
匿名对象:也就是没有名字的对象
语法: new 类名() ==> 例子: new Student() new Person()
使用场景:
1只需要调用类的方法一次的时候 就可以使用匿名对象来进行调用,使用这种方式的好处: 可以节省内存空间
在这里插入图片描述

2.在方法调用的时候 可以作为方法的实参
调用
在这里插入图片描述

方法的申明
在这里插入图片描述

3.使用匿名对象作为方法的返回值类型
方法的申明
在这里插入图片描述

方法的调用
在这里插入图片描述

匿名对象 是最先被垃圾回收期收回 因为没有指向任何栈内存中的引用

静态变量的特点:
1.静态变量是优先于对象进行加载
2.静态变量是存在方法区的静态区间中
3.静态变量能够实现所以对象进行共享数据
4.静态变量赋值 取值
赋值:类名.属性=值(使用这种方式) 对象名.属性=值(不推荐使用)
取值 :类名.属性 ==>取值 (常用这种方式)
对象名.属性 ==>取值 但是一般不推荐使用

静态的注意事项
1.静态方法定义 只需要在方法的返回值前面加上static关键字
语法:
public static void showInfo(); main()也是静态方法 只是一个特殊的静态方法
2.静态方法中是不能来访问非静态的变量 原因: 静态方法是优先于对象而存在 而对象的属性只有创建对象成功之后才能进行赋值操作,静态方法早已经加载到静态区间中 所以肯定不访问
3.静态的方法不能调用非静态的方法
4.静态方式不能来访问this
总计: 静态方法不能来访问非静态的资源
5.非静态方法是可以调用静态方法的
6.如果不是一定要使用静态的 就不需要使用静态 特别是索引 还是经常发生改变的数据尽量别使用静态的 在开发过程中一般工具类的使用就会使用静态

静态变量与成员变量区别

1.俗称:
静态变量 又被称为类变量
成员变量 又被称为对象变量
2.存的位置不同
静态变量是存在方法区的静态区间中
成员变量是存在堆内存中
3.生命周期
成员变量的生命周期 是随着对象的加载而加载 随着对象的销毁而销毁
静态变量的生命周期 是随着类的加载而加载 随着类的销毁而销毁
4.调用方法不同
静态变量 可以 使用类名来直接调用 也可以使用对象名来进行调用
成员变量 只能是对象名来进行调

工具类
其实就一个普通的java类 但是这个类中提供了很多静态的方法(在项目供别人来使用)
编写一个数组工具类
以上是我得总结,有一部分在学校没有听懂,所以这部分总结也是这一部分。

作业
1.类的成员变量:
请定义一个交通工具(Vehicle)的类,其中有:属性:速度(speed),体积 (size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减 速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方 法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减 速的方法对速度进行改变。
Vehicle类

public class Vehicle {
    int speed;
    int size;

    public void setSize(int size) {
        this.size = size;
    }

    public void move(){
        System.out.println("车子开起来了");
    }

    public void setSpeed(int speed){
        this.speed=speed;
    }

    public void speedUp(int a){
        speed+=a;
    }

    public void speedDown(int b){
        speed-=b;
    }

    public void play(){
        System.out.println("速度是"+speed+"重量是"+size);
    }
}

VehicleTest类

public static void main(String[] args) {
        Vehicle car=new Vehicle();
        car.move();
        car.setSpeed(120);
        car.setSize(1500);
        car.speedUp(10);
        car.speedDown(20);
        car.play();
    }

2.类的成员变量与方法、构造方法
在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那 么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分 (minute),秒(second),为了保证数据的安全性,这三个成员变量 应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化 成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。

MyTime类

public class MyTime {
    private int hour;
    private int minute;
    private int second;
   public MyTime(int hour,int minute,int second){
        this.hour=hour;
        this.minute=minute;
        this.second=second;
    }
    public void addSecond(int sec){
        int sum=sec+second;
        if(sum>60){
            minute+=(sum/60);
            if(minute>60){
                hour+=(minute/60);
                minute=sum%60;}
            second=sum%60;
        }else {
        second+=sec;
    }
}
    public void addMinute(int min){
        int sum=min+minute;
        if(sum>60){
            hour+=(sum/60);
            minute=sum%60;
        }else {
            minute+=min;
        }
    }
    public void addHour(int hou){
        hour+=hou;

    }
    public void subSecond(int sec){
        int sum=second-sec;
        if(sum<0){
            minute-=(sum/60);
            if(minute<0){
                hour-=((-(minute/60))+1);
                minute=60+(sum%60);}
            second=60+(sum%60);
        }
        else {
            second-=sec;
        }
    }
    public void subMinute(int min){
        int sum=minute-min;
        if(sum<0){
            hour-=((-(sum/60))+1);
            minute=60+(sum%60);
        }else {
            minute-=min;
        }
    }
    public void subHour(int hou){
            hour-=hou;

    }
    public  void diaplay(){
        System.out.println(hour+"时"+minute+"分"+second+"秒");
    }

}

MyTimeTest类

public class MyTimeTest {
    public static void main(String[] args) {
    MyTime time1=new MyTime(19,33,45);
    time1.addSecond(30);
    time1.addMinute(25);
    time1.addHour(6);
    time1.diaplay();
    time1.subSecond(26);
    time1.subMinute(78);
    time1.subHour(3);
    time1.diaplay();
}
}

3.构造方法
编写Java程序,用于显示人的姓名和年龄。定义一个人类(Person), 该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造 方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年 龄打印出来。
4.get方法和set方法 定义一个类,该类有一个私有成员变量,通过构造方法将其进行赋初 值,并提供该成员的getXXX()和setXXX()方法

Person类

public class Person {
    private  String name;
    private  int   age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Person(String name,int age){
        this.age=age;
        this.name=name;
    }
    public void display(){
        System.out.println("名字:"+name+"\n年龄:"+age);
    }
}

PersonTest类

public class PersonTest {
    public static void main(String[] args) {
    Person people=new Person("袁金",23);
    people.display();
    people.setName("万志康");
    people.setAge(22);
    System.out.println(people.getName());
    System.out.println(people.getAge());
    people.display();
}
}

5.构造方法与重载
建立一个汽车类,包括轮胎个数,汽车颜色,车身重量等属性。并通过 不同的构造方法创建事例。 至少要求:汽车能够加速,减速,停车。 要求:命名规范,代码体现层次,有友好的操作提示。

Car类

public class Car {
    public int luantai=4;
    public String color="brack";
    public int  size=1500;
    public int speed=120;
    public int num=1;
    public Car(){
    }
    public Car(String color,int  size){
        num=2;
        luantai=8;
        this.color=color;
        this.size=size;

    }
        public void speedUp(int a){
        if(num==1){
            System.out.println("小宝马加速慢");
        }
        else {
            System.out.println("大奔加速快");
        }
            speed+=a;
        }
        public void speedDown(int b){
            if(num==1){
                System.out.println("小宝马减速慢");
            }
            else {
                System.out.println("大奔减速快");
            }
            speed-=b;
        }
        public void show(){
            if(num==1){
                System.out.println("小宝马:"+color+"色"+luantai+
                        "轮"+size+"kg"+speed+"km");
            }
            else {
                System.out.println("大奔:"+color+"色"+luantai+
                        "轮"+size+"kg"+speed+"km");
            }
        }
}

CarTest类

public class CarTest {
    public static void main(String[] args) {
        Car baoma=new Car();
        Car daben=new Car("yellow",2500);
        baoma.speedUp(10);
        daben.speedUp(20);
        baoma.show();
        daben.show();
}}

6.Static关键字与普通变量的区别: 创建一个名称为StaticDemo的类,并声明一个静态变量和一个普通变 量。对变量分别赋予10和5的初始值。在main()方法中输出变量值。

StaticDemo类

public class StaticDemo {
    public int num=10;
    public static int num2=5;
    public void show(){
        System.out.println("非静态方法");
        System.out.println(num);
        System.out.println(num2);
    }
    public static void show1(){
        //System.out.println(num);会报错
        System.out.println("静态方法");
        System.out.println(num2);
    }

}

CarTest类

public class StaticDemoTest {
    public static void main(String[] args) {
        System.out.println(new StaticDemo().num);
        System.out.println(StaticDemo.num2);
        new StaticDemo().show();
        StaticDemo.show1();
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值