java为什么要用new(java中,什么时候需要new来实例化)
大家好,感谢邀请,今天来为大家分享一下java为什么要用new的问题,以及和java中,什么时候需要new来实例化的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
java中,什么时候需要new来实例化
(1)同一个对象在不同时刻体现出来的不同状态。
(2)多态的前提:
A:有继承或者实现关系。
B:有方法重写。
C:有父类或者父接口引用指向子类对象。
多态的分类:
a:具体类多态
class Fu{}
class Zi extends Fu{}
Fu f= new Zi();
b:抽象类多态
abstract class Fu{}
class Zi extends Fu{}
Fu f= new Zi();
c:接口多态
interface Fu{}
class Zi implements Fu{}
Fu f= new Zi();
(3)多态中的成员访问特点
A:成员变量
编译看左边,运行看左边
B:构造方法
子类的构造都会默认访问父类构造
C:成员方法
编译看左边,运行看右边
D:静态方法
编译看左边,运行看左边
为什么?
因为成员方法有重写。
(4)多态的好处:
A:提高代码的维护性(继承体现)
B:提高代码的扩展性(多态体现)
(5)多态的弊端:
父不能使用子的特有功能。
现象:
子可以当作父使用,父不能当作子使用。
(6)多态中的转型
A:向上转型
从子到父
B:向下转型
从父到子
java里的new到底是什么意思
在Java中,new关键字被使用来创建一个新的对象,可以理解为创建的意思。
使用关键字new来创建一个对象也叫类的实例化,使用new创建对象时,会调用构造方法初始化对象。例如:
Object referenceVariable= new Constructor();/*实例化对象*/
可以通过已创建的对象来访问成员变量和成员方法:
referenceVariable.variableName;/*访问类中的变量*/
referenceVariable.methodName();/*访问类中的方法*/
扩展资料
new关键字创建对象的过程介绍
1、将类加载到方法区
JVM首先会检查这个new指令的参数能否在常量池中定位到一个类的符号引用;如果找不到就将该类加载到方法区并经过解析和初始化等步骤,计算实例化对象所需要的内存;为类的静态变量赋予正确的初始值。
2、在堆中开辟一块内存用于存储新创建的对象
将类实例化出一个新的对象,根据类加载时计算所需的内存大小;在堆中开辟一块内存,用于存储新对象的成员属性和方法区地址的引用。成员方法引用指向方法区中该对象对应的方法。
3、在栈中创建指向对象的引用
在栈中创建一个栈针,用于指向堆中创建的对象。
Java里为什么string不用new呢又不是基本数据类型。
创建String对象,有两种方式,
一是来new型:String
s
=
new
String("abc");
另一种是双引号型:String
s
=
"abc";
那么这两种方式有什么区别呢?
答:这两种方法生成的字符串对象,在内存中的存取机制不同。
Java为String类型提供了缓冲池机制,当使用源双引号定义百对象时,Java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就直接拿出来应用,如果不存在则创建一个新的字符串放在缓冲池中。示例代码如下:
String
a
=
"tom";
String
b
=
"tom";
在上诉代码中,变量a和b使用的是缓冲区中的同一个存储对象。
在使用String构造方法定义对象时,Java环境会和创建其他类型的对象一样,每次调用时,都会去创建一个新的对象。示例代码如下:
String
a
=
new
String("tom");
String
b
=
new
String("tom");
在上述代码中,变量a
和b
使用的是两个不同的存度储对象,只是对象中的内容相同。
通常情况下,建议使用string
a="tom";。
在java中new的用途是什么
java中new关键字的作用就是在你声明了一个对象后,给对象分配相应内存。强类型,较高效。能调用任何public构造。
创建对象,实例化对象;
实例化对象,赋予对象空间,即堆内存地址;
调用构造函数;
比如当我们创建一个对象:Studentstu= new Student();在这里的new具体作用为:
首先要明确stu是父类的一个引用,没有实际在堆中分配空间。
其次new Student()的作用了:new是在堆中为对象stu申请了一块空间。其中new也实际上是在调用了父类的构造方法。
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!