首页 > 编程语言 >java类与对象

java类与对象

时间:2022-11-15 20:13:54浏览次数:46  
标签:java 变量 构造方法 对象 静态 实例 执行

1.不是static类型则需要定义一个对象变量,然后“创建(new)”一个对象,赋值给对象变量,现在就可以通过对象变量使用对象,主要方式有:(1)直接调用类的方法;(2)存取类的字段。

2.在定义变量时,Java要求必须显式初始化变量;对象变量如果不引用一个真实的对象,则必须声明为null。特殊值null:代表一个对象变量不引用任何对象

引用对象后的对象变量:MyClass obj=new MyClass();

3.可以使用final定义一个“常量”对象变量                final MyClass obj = new MyClass();

注意:“常量”对象变量不能指向另一个对象,但可以修改对象,比如设置它所引用对象的某公有字段值。

4.对于原始数据类型的变量(比如int),可以直接使用“==”判断两变量值是否相等

5.当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等

当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。

引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。

6.两个对象的“内容”,其实是指它们在某一时刻的所有字段的值,“内容相等”,其实是就“对应字段值”一致。

在Java中要比对两个对象的字段值,可以 “重写(override)”基类的equals()方法

7.当创建一个对象时,它的构造方法会被自动调用。构造方法与类名相同,没有返回值。

如果类没有定义构造函数,Java编译器在编译时会自动给它提供一个没有参数的“默认构造方法”

8. 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法

执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

 

执行类的构造函数。。

 

 

 

优先调用有参构造方法,然后无参的话取决于初始化块和字段的初始值谁在前谁在后,先调用后面的那个。

 

11.class Employee

 

{

 

String name;

 

long salary;

 

short employee_id;

 

static int total_employee_id;

 

...

 

}

 

可以用对象名或类名作为前缀访问静态数据

 

Employee newhire=new Employee();

 

newhire.total_employees=1;

 

Employee.total_employees=1;

 

 

 

推荐使用类名来直接访问静态字段。

 

12.静态初始化块只执行一次。

 

创建子类型的对象时,也会导致父类型的静态初始化块的执行。

 

13. 类的静态方法只能访问类的静态成员!

 

14. 总结出“静态初始化块的执行顺序”
     总结:对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

 

15. 静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

 

只要定义一个类的对象在通过对象调用即可

 

类中静态的方法或者属性,本质上来讲并不是该类的成员,在java虚拟机装在类的时候,这些静态的东西已经有了对象,它只是在这个类中"寄居",不需要通过类的构造器(构造函数)类实现实例化;而非静态的属性或者方法,在类的装载是并没有存在,需在执行了该类的构造函数后才可依赖该类的实例对象存在。

 

在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

 

静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

package 课下测试;
public class Static {
static int x;//静态变量x
int y;//实例变量y
static public int getX() {
return x;}
static public void setX(int newX) {
x = newX;}
public int getY() {
return y;
}
public void setY(int newY) {
y = newY;
}
public static void main(String[] args) {
System.out.println("静态变量x="+Static.getX());
//System.out.println("实例变量y="+Static.getY());// 非法,编译时将出错
//why
Static a= new Static();
Static b= new Static();
a.setX(1);
a.setY(2);
b.setX(3);
b.setY(4);
System.out.println("静态变量a.x="+a.getX());
System.out.println("实例变量a.y="+a.getY());
System.out.println("静态变量b.x="+b.getX());
System.out.println("实例变量b.y="+b.getY());
}
}

标签:java,变量,构造方法,对象,静态,实例,执行
From: https://www.cnblogs.com/ysl666/p/16893700.html

相关文章

  • 函数_Java
    函数基础一个典型的函数定义包括以下部分:修饰符、返回类型、函数名字、由0个或多个形参组成的列表以及函数体。如以下函数:publicclassMain{privatestaticint......
  • 复习java基础的第二天
    java流程控制1Scanner对象基本语法Scannerscanner=newScanner(System.in);next();一定要读取到有效字符后才可以结束输入。对输入有效字符之前遇到的空......
  • JAVA中字符串的插入
    一、问题描述就是我们现在有一个字符串,我们需要实现一个功能,就是选择在字符串中字符的ASCII码最大的地方,插入字符串。二、解决思路我们直接循环,获取字符串中所有的字符,......
  • java 获取字符串长度
    获取字符串长度/***获取字符串的长度,如果有中文,则每个中文字符计为2位*@paramvalue指定的字符串*@return字符串的长度*/publicstaticintlength......
  • Java Instrumentation
    前言JDK1.5开始,Java新增了Instrumentation(JavaAgentAPI)和JVMTI(JVMToolInterface)功能,允许JVM在加载某个class文件之前对其字节码进行修改,同时也支持对......
  • 常用的JavaScript代码技巧 (一)字符串、数字
    一、字符串类1.比较时间consttime1="2022-03-0510:00:00";consttime2="2022-03-0510:00:01";constovertime=time1<time2;//overtime=>true2.货币格式......
  • 常用的JavaScript代码技巧 (二)布尔、数组
    一、布尔1.基础操作consta=true&&false;//falseconstb=true||false;//trueconstc=!0;//true2.确定数据类型不判断的类型:undefined,null,stri......
  • java日历类Calendar的基本使用方法
    packageA_ShangGuiGu.DateTimeTest;importorg.junit.Test;importjava.util.Calendar;importjava.util.Date;publicclassCalendarTest01{@Testpublicvoidc......
  • 9道常见的java笔试选择题
    9道常见的java笔试选择题1.关于Java编译,下面哪一个正确()(选择一项)A.Java程序经编译后产生machinecodeB.Java程序经编译后会生产bytecodeC.Java程序经编译后会产生DLLD.以......
  • 学习JAVA如何更快高效的掌握
      作为一个新入门的小白,这部分的内容肯定是要学扎实的。如果Java基础的技术都学的不扎实,那就没办法继续学后面的内容。主要的内容包含:Java基础语法、Java的平台应用以......