java 基础之 类,对象,引用 ,方法,参数,返回值,this自引用,注释

1.定义类

// >>TODO 一个类以public class开头,public class 代表这个类是公共类,类名必须和文件名相同,
// >> TODO public class 后面紧跟类名,然后是一堆大括号的类体

public class Merchan {
    String name;//成员变量的定义,
    String id;
    int count;
    double price;
}

2.类的使用

   public static void main(String[] args) {
        // TODO 使用new操作符,可以创建一个类的实例/对象(instance / object)
        // TODO 使用new创建一个类的实例侯,类中定义的每种变量都会被赋以其类型的初始值
        // TODO 这个和数组一样
        // TODO 使用一个类的对象变量,可以指向并操作这个实例,这点也和数组一样
        Merchan merchan = new Merchan();//使用new操作符创建了一个名为merchan的Merchan类的实例(对象)
        merchan.count=10;//使用点操作符可以操作实例变量所指向对象的成员变量
    }

创建完之后,merchan对象的每个成员都有其类型所对应的缺省值、

3.引用(reference)数据类型
java中的数据类型分为基本数据类型和引用数据类型
基本数据类型:int double char 等

引用数据类型

public class Supermarket {
    public static void main(String[] args) {
        // TODO m是一个Merchan类型的引用,只能指向Merchan类型的实例;
        // TODO 引用数据雷响变量包含两个部分的信息,类型和实例,也就是说
        // TODO 每一个引用数据类型的变量(简称引用)都指向某个类(class/自定义类型)的
        //TODO 的一个实例/对象(instance / object)不同类型的引用在java的世界里都是引用
        // TODO 比如,m就是Merchan类型,只能指向Merchan的实例;
        Merchan m;
        Merchan m1 = new Merchan();
        //TODO 若要给引用赋值,则两者的类型必须一样,m1可以给m赋值,因为她们都是Merchan类型的
        // TODO 注意赋值之前,m并未指向任何对象。上面只是定义了m的类型,并未初始化
        m = m1;// TODO m1是一个指向Merchanshili的变量
    }
}

直接输入引用会得到什么呢?

 System.out.println(m1);

得到一个地址,所以我们发现,引用的本质就是类的对象在内存中的一个地址;初始化就是给变量指定一段内存地址、引用赋值事实上就是赋予其自身的地址;
在这里插入图片描述
4、类,对象/实例,引用的关系
类和对象的关系:
①类是对象的模板,对象是类的实例。
②一个java程序中类名相同的类只能有一个,也就是说类型不会重名
③一个类可以创建任意多个对象
④一个对象只能根据一个类来创建

引用和类以及对象的关系
①引用必须是也只能是一个类的引用
②引用只能指向其所属类型的类的对象
③相同类型的引用之间可以赋值
④只能铜鼓哦一个对象的引用,来操作一个对象,比如访问成员变量

5.数组对象

数组是一种特殊的类
数组的类名就是类型带上中括号
同一类型的数组,每个数组对象的大小可以不一样,也就是每个数组对象占用的内存的大小可以不一样
可以用引用指向类型相同大小不同的数组,因为她们属于同一类型

引用的数组,可以把类名当成自定义类型,定义引用的数组,甚至多维数组

public class Supermarket {
    public static void main(String[] args) {
      int[] intArr;//定义一个数组类型的引用
      //可以指向不同大小的实例
        intArr = new int[1];
        intArr = new int[2];
    }
}

6.让类的对象有行为(类方法
方法叫method或者function
可以在类里面定义与类相关的所有方法体,将与类相关的所有操作都在类里面完成,这也是封装的一个重要要求。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述


public class MerchandiseV2 {

    public String name;
    public String id;
    public int count;
    public double soldPrice;
    public double purchasePrice;
    String madeIn;

    // >> TODO 访问修饰符
    // >> TODO 返回值类型:无需返回值则用void表示,void是Java中的关键字
    // >> TODO 方法名:任意合法的标识符都可以
    // >> TODO 参数列表:后续讲解
    // >> TODO 方法体:方法的代码
    // >> TODO 方法体内部定义的变量叫做局部变量
    public void describe() {
        double netIncome = soldPrice - purchasePrice;
        System.out.println("商品名字叫做" + name + ",id是" + id + "。 商品售价是" + soldPrice
                + "。商品进价是" + purchasePrice + "。商品库存量是" + count +
                "。销售一个的毛利润是" + netIncome + "。制造地为" + madeIn);
    }
}

使用类方法的方式和使用类成员变量的方式是一样的
都是通过点儿操作符进行访问调用


public class MerchandiseV2DescAppMain {
    public static void main(String[] args) {
        MerchandiseV2 merchandise = new MerchandiseV2();

        merchandise.name = "书桌";
        merchandise.soldPrice = 999.9;
        merchandise.purchasePrice = 500;
        merchandise.count = 40;
        merchandise.id = "DESK9527";
        merchandise.madeIn = "China";

        merchandise.describe();
        
    }
}

7.对于返回值类型,可以是基本返回值类型,也可以是我们自定义的返回值类型;比如:

   public HouKaiMao mademyself(){
        HouKaiMao houKaiMao=new HouKaiMao();
        houKaiMao.name="houkaimao";
        houKaiMao.age=34;
        houKaiMao.sex='m';
        houKaiMao.profix=99;
        houKaiMao.describle();
        return houKaiMao;
    }

HouKaiMao并不是基础返回值类型,但是我们一样可以作为一种返回值进行使用。

8**.参数**


    // >> TODO 参数是定义在方法名字后面的括号里的
    // >> TODO 参数定义的规范和变量一样,都是类型名字加标识符,这里的标识符我们叫做参数名。
    // >> TODO 方法体中的代码可以使用参数
    // >> TODO 参数的值在调用方法的时候需要给出,有的资料叫做实参(实际参数)
    //    TODO 对应的,方法定义这里的参数,叫做形参(形式参数)
    // 如果返回值是负数,就代表购买失败,比如库存不足
    public double buy(int countToBuy) {
        if (count < countToBuy) {
            System.out.println("商品库存不够");
            return -1;
        }

    // >> TODO 一个方法可以有多个参数,多个参数之间用逗号隔开
    public double buyAndPrintLeft(int countToBuy, boolean printLeft) {
        if (count < countToBuy) {
            System.out.println("商品库存不够");
            if (printLeft) {
                System.out.println("商品剩余库存为" + count);
            }
            return -1;
        }
    // >> TODO 参数可以是任何类型,包括自定义类型,甚至是自己的类型都没问题
    public boolean totalValueBiggerThan(MerchandiseV2 merchandiseV2) {
        return count * purchasePrice > merchandiseV2.purchasePrice * merchandiseV2.count;
    }

9.参数和返回值的传递


	参数的传递,其实就是赋值。左边是形参,右边是括号里的实参。
类似于buy(int countToBuy = (c + 2) * 5)
	参数本身可以是一个表达式,只要表达式的值类型可以和参数类型匹配就可以
	对于引用类型,参数同样是一个表达式
	方法里使用的参数相当于一个局部变量。使用方法前,会用实参给局部变量赋值。
	可以把有返回值的方法,当成一个成员变量,当成一个类型为返回值类型的成员变量
	关注于返回值并忽略方法执行的部分,使用返回值,就好像在使用一个成员变量
	给返回值赋值,并不会影响用来充当返回值的变量

在这里插入图片描述
10,this自引用

    public void addCount(int count) {
        // >> TODO 方法里隐藏着一个this自引用,指向调用这个方法的对象。
        // >> TODO 使用一个对象调用方法,也叫做在这个对象上调用方法。因为方法可以访问这个对象的值。
        // >> TODO 访问一个成员变量的完整形态,是"this.成员变量的名字"
        this.count += count;
public class HouKaimAO {
    int age;
    char sex;
    public void selfintroduce(){
        System.out.println(this.age);
        System.out.println(this.sex);
        System.out.println("this:"+this);
    }
}

我们可以看到,this的输出是一个地址,就是引用的地址
在这里插入图片描述

11.注释
注释一行

//this is a function for profit calculate
    public double calculateProfit() {
        double profit = soldPrice - purchasePrice;
        return profit;
    }

注释多行

  /*
    多行注释也可以出现
    在任何地方
     */

说明(双星)

/**
 *
 * 对这个类的说明
 *
 * @author 作者
 *
 */

在这里插入图片描述
在java是比较注重注释的
我们可以在
https://docs.oracle.com/en/java/javase/11/docs/api/index.html
里面看到javadocs
在这里插入图片描述
在这里插入图片描述
我们可以尝试以下搜索String类的docs
这就是java的官方docs
在这里插入图片描述
那 这个文档怎么生成的呢,事实上,java的注释有一套标准的方法,只要按照这个标准去些,我们就可以使用一个内置的工具将注释生成这种标准的文档,
我们可以复制一段文档里的句子去String类里里面搜索一下
在这里插入图片描述
果然有

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值