java新手笔记之类和对象的关系和原理图忘记了在这里看

类:一组属性和相关行为(方法、函数)的集合

类是对一类事物的描述,是抽象(abstract)的,
对象是一类事物的实例,是具体的,
类是对象的模板,对象是类的实体

类的定义

属性(成员变量):
行为(成员方法):
成员方法没有static关键字
成员变量是在类当中的

//下面是描述一个学生的类;

public class Student {
    int age = 18;//成员变量
    String name = "张三";//成员变量
    //成员学习方法
    public void study(){ //
        System.out.println("学习");
    }
    //成员吃饭方法
    public void eat(){
        System.out.println("吃饭");
    }
}
//通常情况下一个类不能直接使用,需要创建一个对象才能使用;

1、导包
import 包名称.类名称;(路径)
同一个包下不用导入
2、创建
类名称 对象名 = new 类名称();
3、使用
使用成员变量
对象.成员变量名
对象.成员变相方法

成员变量是有默认值的
下面创建一个student的类

package study;

public class Use {
    public static void main(String[] args) {
        Student stu = new Student();
        System.out.println(stu.age);
        System.out.println(stu.name);
        System.out.println(stu.defaultStr);
        System.out.println(stu.defaultInt);
        System.out.println(stu.defaultfloat);
        System.out.println(stu.defauldouble);
        System.out.println(stu.defaultlong);
    }

}
//以下是实例化类 为对象
package study;

public class Student {
    int age = 18;
    String name = "张三";
    String defaultStr;
    int defaultInt;
    float defaultfloat;
    double defauldouble;
    long defaultlong;
    public void study(){
        System.out.println("学习");
    }
    public void eat(){
        System.out.println("吃饭");
    }
}


以下是结果
在这里插入图片描述

对象的内存图解

先来段代码活动下手指

//创建一个phone类
package cn.study;

public class Phone {
    String brand = "华为";
    String Model ="P30pro";
    String color ="black";
    double size =5.5;
    int price = 5300;
    //打电话
    public void call(String who){
        System.out.println("正在呼叫"+who);
    }
    public void call(long who){
        System.out.println("正在呼叫"+who);
    }
    //发短信
    public void msg(String m,long n){
        System.out.println("已经将短信内容"+m+"发送到"+n);
    }
    //发短信方法重载
    public void msg(long n,String m){
        System.out.println("已经将短信内容"+m+"发送到"+n);
    }
    public void msg(String n,String m){
        System.out.println("已经将短信内容"+m+"发送到"+n);
    }
    //打开照相机
    public void camera(){
        System.out.println("已经打开照相机");
    }
}

//实例化一个类对象
package cn.study;

public class Newphone {
    public static void main(String[] args) {
        Phone phone = new Phone();
        System.out.println(phone.brand);
        System.out.println(phone.color);
        System.out.println(phone.Model);
        System.out.println(phone.price);
        System.out.println(phone.size);
        phone.call(18888888888L);
        phone.msg("华为牛逼",18888888888L);
        phone.msg(18888888888L,"华为牛逼");
        phone.msg("任正非","华为牛逼");
    }
}
//输出结果
华为
black
P30pro
5300
5.5
正在呼叫18888888888
已经将短信内容华为牛逼发送到18888888888
已经将短信内容华为牛逼发送到18888888888
已经将短信内容华为牛逼发送到任正非

以上代码和图解无关系,

进栈,压栈,先进栈的在底下
成员变量通过对象的内存地址即可访问
成员方法在对象里是一个内存地址 访问成员方法需要先通过对象的内存地址 再通过成员方法的内存地址去进行调用,当方法调用完成后就会出栈(弹栈)从栈空间消失,
在这里插入图片描述

2个对象的内存图
在这里插入图片描述

两个引用指向同一个地在这里插入图片描述址的内存图

对象类型作为方法的参数;
讲对象作为参数 传递的时候 传递的是引用地址值

package cn.study;
//创建一个phnoe类
public class Phone {
    String brand = "华为";
    String Model ="P30pro";
    String color ="black";
    double size =5.5;
    int price = 5300;
    //打电话
    public void call(String who){
        System.out.println("正在呼叫"+who);
    }
    public void call(long who){
        System.out.println("正在呼叫"+who);
    }
    //发短信
    public void msg(String m,long n){
        System.out.println("已经将短信内容"+m+"发送到"+n);
    }
    //发短信方法重载
    public void msg(long n,String m){
        System.out.println("已经将短信内容"+m+"发送到"+n);
    }
    public void msg(String n,String m){
        System.out.println("已经将短信内容"+m+"发送到"+n);
    }
    //打开照相机
    public void camera(){
        System.out.println("已经打开照相机");
    }
}

实力化phone类,讲实例化对象作为参数传递给 phonetwo函数进行一些列操作;(对象类型传递的是地址值)

package cn.study;

public class Newphone {
    public static void main(String[] args) {
        Phone phone = new Phone();
        System.out.println(phone.brand);
        System.out.println(phone.color);
        phoneTwo(phone);
    }
    public static  void phoneTwo(Phone Parameter){
        Parameter.brand="小米";
        Parameter.color="red";
        System.out.println(Parameter.brand);
        System.out.println(Parameter.color);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值