【无标题】

2024-01-08 09:24:33

学习笔记

—2024.1.7

一、数组

  1. 静态化数组
int [] a={0,1,2,3};
  1. 动态化数组
int [] a=new int[];

二、面向对象基础

1.类(对象的设计图/对象的模板)的建立

public class BStudentObject {

        String name;
        double chinese;//数据
        double maths;//数据

        public void PrintlnTotalScore(){
            System.out.println(name+"总成绩是"+(chinese+maths));
            //方法
        }
        public void PrintlnAverageScore(){
            System.out.println(name+"平均成绩是"+(chinese+maths)/2);
            //方法
        }
}

对象的内容包括String,变量和方法。

2.对象的使用(以1中类为模板)

(1)建立一个对象

 BStudentObject s1=new BStudentObject();

(2)给对象的数据赋值并使用方法

		s1.name="小明";
        s1.chinese=60;
        s1.maths=70;
        s1.PrintlnAverageScore();
        s1.PrintlnTotalScore();

3.对象运行原理


(1)使用的三个区域:栈内存,方法区,堆内存
(2)i)类和方法会在方法区建立。
ii)当初始化对象时,对象会在栈内存建立,并存储一个可通过其访问到堆内存的地址。还会将基础数据存储到堆内存,同时存储一个指向方法区的类的地址。
iii)当堆内存里的基础数据未被赋值时会有默认值,赋值会改变数据。
iiii)调用方法时,使用堆内存的数据并通过访问地址获取方法区里的类方法并执行。
(3)字符串默认null,数值变量默认0,boolean默认false。
(4)定义的对象如s1等,存储的就是栈内存中的地址。

4.数据冲突

(1)代码展示

BStudentObject s2=new BStudentObject();
        s2.name="张三";
        BStudentObject s3=s2;
        s3.name="罗翔";
        System.out.println(s2.name);

该代码运行结果为s2和s3的name都输出"罗翔"。
(2)运行原理
因为对象存储的是数据,因此在初始化s3时将s2的地址赋值给了s3,因此s2和s3的数据指向了堆内存的同一块数据。可以理解为两个指针指向了同一个数据。因此两个对象的name相同。

5.个人理解

(1)我只了解过结构体的基础知识,暂时没学链表。个人感觉类的建立类似于c语言的结构体的建立,类里的方法类似于c语言的非主函数。
(2)类和对象通过三个区域和地址的使用,形成了一种类似于指针的效果。

6.遇到的问题

当堆对象初始化后,在进行赋值改变会程序报错

 BStudentObject s1=new BStudentObject();
 BStudentObject s1=s2;
 BStudentObject s1=null;

这三种赋值随意进行一个,再进行另一个就会程序报错。

如果你问我为什么,我只能说,我是猪,我不知道。

三、this关键字

一个新的类

 public class Student {
    double score;
    public void PrintlnThis(){
        System.out.println(this);
    }
    public void Printlnpass(double score){
        if(this.score>=score)
        {
            System.out.println("Pass.");
        }
        else {
            System.out.println("Don't pass.");
        }
    }

输出this实际效果是输出对象存储的地址。而this也是用来解决变量名冲突的问题。在使用方法时如果存在对象数据名和方法数据名冲突时,可以使用this.数据名来表示对象中的数据。

文章来源:https://blog.csdn.net/OMENR/article/details/135443849
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。