java 对象——new关键字

前言:

对new关键字理解前,我们首先简单了解一下构造方法与对象的创建。  

1. 构造方法

构造方法是类中的一种特殊方法,用类创建对象时需要使用它的构造方法,类中的构造方法必须和它所在类的名字完全相同,且没有类型。

class Person 
{
	int age;
	String name;
 
	Person(){
		
	}
}

分析:

在Person类中Person()是一个构造函数,其实这个方法是被java隐藏的,也就是说

  • 如果类中没有编写构造方法,系统会默认该类有一个无参数,且方法体中没有语句的构造函数。

                      如Person类中的Person(){ },

  • 如果类里定义了一个或多个构造函数,那么java就不提供默认的构造方法了。

不管你是否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,默认构造方法的访问修改符和类的访问修改符相同(类为 public,构造函数也为 public;类改为 protected,构造函数也改为 protected)。一旦你定义了自己的构造方法,默认构造方法就会失效。

如下:

class Person 
{
	int age;
	String name;
 
	Person(){
		age=20;
		name="小明";
	}
 
}

2 、创建对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来创建一个对象。
  • 初始化:使用new创建对象时,会调用构造方法初始化对象。
//声明一个SimplePerson类型的变量
SimplePerson simplePerson;
//通过new关键字调用SimplePerson类的构造器,返冋一个SimplePerson实例
//将该SimplePerson实例赋给simplePerson
simplePerson=new SimplePerson();
//可以简写为
SimplePerson simplePerson=new SimplePerson();

1)对象声明:

一般格式为:     类的名字   对象的名字;

如:Person person;

(2)为声明的对象分配变量

1.使用new关键字和类的默认构造方法为声明的对象分配变量,即创建对象。

class Person 
{
	int age;
	String name;
	
    Person(){
        //默认的构造方法
    }
}
public class DomeTest
{
	public static void main(String[] args) {
		Person xiaoming;			//声明对象
		xiaoming=new Person();	//为变量分配变量(使用new和默认的构造方法)
	}
}

 2.使用new运算符和类的构造方法为声明的对象分配变量,即创建对象。

class Person 
{
	int age;
	String name;
 
	Person(int age,String name){
		System.out.println("the man age is"+age+"! name: "+name);
	}
 	
}
public class DemoTest
{
	public static void main(String[] args) {
		Person xiaoming;			//声明对象
		xiaoming=new Person(20,"小明");	//为变量分配变量(使用new和类中的构造方法)
	}
}

再来一个例子:

class MyClass {
  int x;
 
  // 以下是构造函数
  MyClass() {
    x = 10;
  }
}

public class ConsDemo {
   public static void main(String args[]) {
      MyClass t1 = new MyClass();
      MyClass t2 = new MyClass();
      System.out.println(t1.x + " " + t2.x);
   }
}

3、对象的内存模型

声明变量后,对象xiaoming的内存中还没有任何数据(null),这时的lxiaoming还是一个空对象,对象还不能使用,因为他还没有实体,必须为之分配变量,即为对象分配实体。

xiaoming=new Person(20,"小明"); 此时就为对象分配了变量。

new运算符为变量age,name分配内存后(堆中),将返回一个引用给对象变量xiaoming,也就是返回上图中0xAC12(相当于一个身份id)该引用包含代表着成员变量内存位置及相关重要信息。

new:new关键字是实例化对象,没错,也是为新对象分配内存空间。

总结:

1.Java关键字new是一个运算符。与+、-、*、/等运算符具有相同或类似的优先级。

2.创建一个Java对象需要三部:声明引用变量、实例化、初始化对象实例。

3.实例化:就是“创建一个Java对象”-----分配内存并返回指向该内存的引用。

4.初始化:就是调用构造方法,对类的实例数据赋初值。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值