精华内容
下载资源
问答
  • Java中new一个对象的过程
    千次阅读
    2018-05-04 11:02:34

     

    在Java中,new操作符的本意是分配内存,new一个类就是把这个类实例化为对象。

    程序执行到new操作符时,会根据new后面的类型分配相应的内存空间。接着调用构造函数,填充对象的各个域,这一步叫做对象的初始化。构造方法返回后,一个对象创建完毕,就可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这个对象。

    更多相关内容
  • java 开发, 下面的代码  String a ="abc";  String b = new String("abc");  System.out.println(a==c);  这样打印出来的结果是"false "    这是为什么呢。  java 对对象的管理是维护一张 ...

     

    在 java 开发中, 下面的代码

      String a ="abc";
      String b = new String("abc");

      System.out.println(a==c);

      这样打印出来的结果是"false "

     

      这是为什么呢。

     java  对对象的管理是维护一张 hashcode  内存表的。

     但 第一行 String a = "abc"  时, java   虚拟机会先查看 栈内存是否

    存在着一样内容的  变量, 如 果没有, 则在栈内存中开辟一个临时的栈内存, 用来

    存储  a  的内存。   如果存在同样的内容, 则虚拟机开辟一个b 变量并将 b  的引用指向 a

    所以我们用  System.out.println(a==c);  实际是比较其引用地址是否一样的。

    第二句  String b = new String("abc");  则是在 堆内存中开辟存储空间。

    用 new 出来的空间, 交由虚拟机 动态回收.

    因此这里的   比较引用就是 false 的。

    内容的比较可以用  equals() 函数.

     

    展开全文
  • JAVA new对象过程

    千次阅读 2019-05-06 10:52:05
    我们都知道,创建对象是由 new关键字调用构造方法 返回类实例。...1、 new 用到了Person.class,所以会先找到Person.class文件,并加载到内存(用到类的内容类就会被加载) 2、执行该对象的static代码块(...

    我们都知道,创建对象是由 new关键字调用构造方法 返回类实例。先实例化对象,再把对象初始化。

    例如 : Person jack = new Person();

    这句话到底做了什么事情呢 ? 其实就是讲对象的初始化过程。

    • 1、 new 用到了Person.class,所以会先找到Person.class文件,并加载到内存中(用到类中的内容类就会被加载)
    • 2、执行该对象的static代码块(静态初始块)。(如果有的话,给Person.class类进行初始化)
    • 3、在堆内存中开辟空间,分配内存地址
    • 4、在堆内存中建立对象特有属性,并进行默认初始化
    • 5、对属性进行显示初始化(声明成员属性并赋值)
    • 6、执行普通初始块
    • 7、执行构造函数
    • 8、将内存地址赋值给栈内存中的jack变量

     

     

    展开全文
  • java new对象的理解

    千次阅读 多人点赞 2021-02-12 17:14:29
    new的解释java里的new的英文意思就是"新的"的意思。在JAVA里就是创建一个新的实例,或者说一个新的对象,一个普通类在...举例说明:Java中使用 new关键字 加上 构造方法,来创建一个对象,下面是一个名为Cat的类,pu...

    new的解释

    java里的new的英文意思就是"新的"的意思。在JAVA里就是创建一个新的实例,或者说一个新的对象,一个普通类在没有实例化之前,就是new之前,它的属性,方法等等在内存中都是不存在的。只有使用new了以后,这个类的一些东西在内存中才会真的存在,也就是说只有new了之后,这个类才能用。

    举例说明:

    Java中使用 new关键字 加上 构造方法,来创建一个对象,下面是一个名为Cat的类,public class Cat { public Cat() { System.out.println("这是构造方法"); }}使用new + 构造方法 来创建一个对象。

    那么也就是Cat c = new Cat();前半部分,Cat c 的意思是,在内存中分配一个变量,名字叫c,这个变量是Cat类型的 是想创建的类型;后半部分,new Cat(); 这就是new关键字和构造方法来创建一个对象是实际给的类型,Cat()是构造方法的名字。

    想造出一个对象来,需要运用;new Cat(); 说明 new这个Cat类的一个对象,程序运行的时候,会调用构造方法Cat(),等这个构造方法执行完了,这个Cat类型的对象也就造出来了,真正的出现在内存当中了。

    使用new关键字造出来的对象,被分配在内存的堆区(heap),而且等这个对象真正出来之后,还会做一件重要的事情:new关键字创建出一个对象之后,会把这个对象在内存中的地址返回,通过这个地址就可以找到这个对象。

    那么上面的写法,Cat c = new Cat();意思就是说,把这个对象在内存中的地址 赋值 给变量c,这就是Java中引用概念,c就叫做引用,或者叫引用变量,或者直接叫变量,没问题,都是它;c的值就是一个内存地址,或者叫引用地址。

    通过这个地址,就可以准确的找到刚才创建出来的对象,以后我们要使用这个对象做一些事情,调用此对象的方法什么的,都用过这个引用。

    java的父类声明new子类对象 和子类声明new子类对象

    父类名 a = new 子类名()

    子类名 b = new 子类名()

    a只能调用父类有的函数和属性,如子类有重写则会输出重写的。不能调用子类自己的函数和属性,除非用强转。如为静态的方法或属性则是父类的。

    ((子类) a).子类自己的方法;

    ((子类) a).子类自己的属性;

    b可以调用父类的函数和属性也可以调用子类的函数和属性(子类有重写则会输出重写的)。如为静态的方法或属性则是子类的。

    (父类属性一般都private,不能调用)

    但是对构造函数的执行上二者是没有区别的。

    作用:

    这个父类引用可以指向任意一个子类对象,增加了灵活性,尤其是在作为参数传递给方法的时候。

    java接口对象 = new 实现类 与 实现类 对象= new 实现类

    接口类 a = new 实现类()

    实现类 b = new 实现类()

    和上面继承的规则一样

    可以这样总结,在调用成员变量以及静态方法时,“编译看左边,运行看左边”,即程序编译时创建了一个Animal类型的对象,并且使用new Cat()对于这个Animal对象赋值,但最终得到的还是一个Animal类的对象,调用静态方法或变量只需要看“=”左边的Animal animal即可。

    但是要调用非静态方法时,由于Animal类的对象是用Cat()来实例化的,这个非静态方法在运行时会被重写,从而输出子类中方法重写后的结果。这就是“编译看左边,运行看右边”。

    作用

    实例化对象调用方法,你就会发现使用接口 对象名 = new 类名; 方式实例化的对象只能调用接口中有的方法,而不能调用类中特有的方法。而使用类名 对象名 = new 类名;方式创建出来的对象可以调用所有的方法

    使用接口编程的好处是统一规范化。

    你会发现无论多少个实现类,无论这些实现类有什么不同,使用接口 对象名 = new 类名; 方式实例化对象都可以调用接口中定义的方法,

    在使用的时候,好像区别都不大。实例化对象调用方法,你就会发现使用接口 对象名 = new 类名; 方式实例化的对象只能调用接口中有的方法,而不能调用类中特有的方法。而使用类名 对象名 = new 类名;方式创建出来的对象可以调用所有的方法

    但要是我不止一个实现类呢?如果A有实现类 B C D E。

    用类名 对象名2 = new 类名;来写的话,我们要写5次,创建5个对象,如果用接口回调,我们只需要:

    A a = new B(); a.方法名();

    a=new C(); a.方法名()........来实现多态。

    使用接口编程的好处是统一规范化。你会发现无论多少个实现类,无论这些实现类有什么不同,使用接口 对象名 = new 类名; 方式实例化对象都可以调用接口中定义的方法。

    但是

    接口回调的最大作用并不仅仅是为了统一规范化。这里举个例子:

    public classwork {public static voidmain(String[] args) {

    Phone A= new ClassA(); //Phone是父类,ClassA是实现类

    CallUp(A);

    A= newClassB();

    CallUp(A);

    }public static voidCallUp(Phone phone) {

    System.out.println(phone.call(phone.num));//num是父类的一个属性

    };

    上面这里,Phone是一个基类,它代表所有的手机。

    而ClassA和ClassB代表不同的手机型号,当然还有很多诸如iphone啊华为啊,小米啊之类的接口实现类。

    现在我有一个打电话的功能叫做CallUp(),如果我们使用(实现类 a =new 实现类())的写法,那每个手机型号,我都需要写一个CallUp的方法来接收我的手机,每个手机的打电话方式(方法)都得不到统一。

    如果我们使用接口回调,那我不管你是什么手机,反正只要能实现打电话的就行,所有的手机类型都可以放在Phone phone里面,我就不需要写很多次方法,毕竟手机型号这么多,难道我还得每一个手机型号都为他写一个方法?

    由此可见,接口回调(接口 a = new 接口),不仅仅是为了规范,他最致命的优点是可以统一化管理所有子类,只需要提供一个共有的方法

    强制类型转换

    原文链接:https://blog.csdn.net/qq_39309348/article/details/88061031

    原文链接:https://blog.csdn.net/u012198209/article/details/80064049

    展开全文
  • Java new一个对象的过程

    千次阅读 2019-05-15 17:19:29
    1,首先到常量池找类的带路径全名,然后检查对应的字节码是否已被加载,解析,验证,初始化,如果没有先执行类加载过程(class.forname())。 2,类加载过程完成后,虚拟机会为对象分配内存。分配内存有两种方式,...
  • java for循环使用克隆代替new对象

    千次阅读 2018-10-17 12:51:04
    public class User implements Cloneable { private Integer age; private String name; public User() { ...可见,for循环使用克隆生成对象的效率比new生成对象的效率高。 以上是浅克隆。
  • java中new是什么意思?

    千次阅读 2021-02-12 09:25:52
    Java中使用new关键字使创建对象变得很容易。需要访问一个文件吗?只需要创建一个新的File实例:new File(“jdbc.properties”)实例化一个类对象new运算符实例化一个类对象,通过给这个对象分配内存并返回一个指向...
  • Java中New一个对象是个怎么样的过程?

    万次阅读 多人点赞 2018-03-19 23:09:50
    在语言层面创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机对象(普通Java对象,不包括数组和Class对象等)的创建时一个怎么样的过程?一、对象的创建 当虚拟机遇到一条new指令时候,...
  • 要看的懂对象的创建过程,首先你得有对Java虚拟机和Java基础以及JUC很是熟悉,比如类的加载过程,CAS、多线程、JVM的GC等等 首先好看一个图,我大概会根据图的内容来分享这六个步骤(其实几个步骤不重要,只要包括...
  • 博主总结Java中有5种创建对象的方式,下面给出它们的例子还有它们的测试代码:首先,列举这5种创建对象得方式: 使用得方法 是否调用构造函数 使用New关键字 是 使用Class类的newInstance 是 使用Constructor...
  • java中用new创建一个对象的过程解析

    万次阅读 多人点赞 2016-10-05 01:00:47
    1.右边的“new vheicle"是以vehicle类为模板,在堆空间里创建一个vehicle类对象(也简称vehicle对象)。 2.末尾的()意味着,在对象创建后,立即调用vehicle类的构造函数,对刚生成的对象进行初始化。构造函数肯定...
  • java中new的作用

    千次阅读 2019-08-15 10:29:18
    2、实例化Instantiating :new关键字是一个java运算符,它用来创建对象。 3、初始化Initialization:new运算符,随后调用构造函数,初始化新创建的对象。 1、声明一个变量来指向一个对象,即引用 在此之前,你知道,...
  • JAVA中销毁一个对象的方法

    千次阅读 2021-02-26 09:06:13
    方法一:垃圾回收器垃圾回收器是Java平台中用的最频繁的一种对象销毁方法。垃圾回收器会全程侦测Java应用程序的运行情况。当反先有些对象成为垃圾时,垃圾回收器就会销毁这些对象,并释放这些对象所占用的内存空间。...
  • 关于Java中使用new关键字创建对象

    千次阅读 2019-10-28 20:15:56
    关于Java中的堆和栈 栈存取速度比堆快而且数据可以共享,但栈数据大小与生命周期必须确定 对象创建的过程 我们在需要使用List集合的时候通常会出现下面的语句 List list = new List(); 在这条语句左边是在栈区...
  • java中new的用法是什么

    千次阅读 2021-03-09 16:15:00
    一、输入数据要用new——实例化对象,创建内存示例:Scanner reader = new Scanner(System.in);Scanner是一个类,reader为创建的一个Scanner的对象new就创建了这个实例,为其分配变量。输入的基本类型数据:...
  • 为什么在线程中用 类名::new 创建Runable对象对象的run方法好像没有被执行,线程3和4没有输出内容(PrintThreadName就是输出当前线程名称的) ``` public static void main(String[] args) { new Thread...
  • java new一个对象的过程

    千次阅读 2019-07-05 10:36:43
    Javanew一个对象的时候,会先查看对象所属的类有没有加载到内存,如果没有,就会先通过类的全限定名来加载。加载并初始化完成后,再进行对象的创建工作。 ①加载和初始化类 通过双亲委派模型进行类的加载,先...
  • Java中new出来的算是对象吗?

    千次阅读 2018-07-28 23:59:10
    如题,一直有个问题困惑着我,基本类型我们可以这样定义对象(以int为例): int a;  而引用类型却是只能new出来的,比如这样的: Human xiaoming=new Human();  问题来了,这里的xiaoming算是对象吗?如果...
  • java new对象的创建过程

    万次阅读 2018-07-29 07:00:54
    关于对象的创建过程一般是从new指令(我说的是JVM的层面)开始的(具体请看图1),JVM首先对符号引用进行解析,如果找不到对应的符号引用,那么这个类还没有被加载,因此JVM便会进行类加载过程(具体加载过程可参见我的...
  • Java对象的内存是在哪里分配的?

    千次阅读 2020-09-11 21:12:20
    对于绝大多数对象,内存的确是在堆分配的,但是随着JIT编译器的进步、逃逸分析技术的成熟,“Java对象都是在堆分配内存”这个结论变得不是那么绝对了。 针对Java的内存分配策略,笔者这里画了一张简图如下: 栈...
  • 直接在外层让pics为null ,里面的值直接引用,但是在程序的过程,set值得时候始终未成功,后来在网上查了下null值和new对象的区别,null值是一个空指向,不会占用内存。new是一个实体,会占用内存。但是我又不行在...
  • Java中为什么要用new来构造对象

    千次阅读 2019-08-11 15:09:40
    如果我们要创建一个Text的对象t1我们就会用到text的构造函数,并且在构造函数的前面加上new运算符 new Text() 这个表达式构造了一个Text的对象并且初始化了a的值。 所以我们要想创建一个对象应该 Text...
  • Java中newInstance()和new()区别

    千次阅读 2020-11-02 09:30:49
    newInstance 是弱类型(GC是回收对象的限制条件很低,容易被回收)、低效率、只能调用无参构造,new 是强类型(GC不会自动回收,只有所有的指向对象的引用被移除是才会被回收,若对象生命周期已经结束,但引用没有被...
  • 只有一个变量,连续new几个对象后,旧的对象会自动销毁吗,怎么才能让它们被回收呢
  • 在实际开发,某些情况下,我们可能需要频繁去创建一些对象new),下面介绍一种,我从书上看到的,可以提高效率的方法。 首先,对于将会频繁创建的对象,我们要让这个类实现Cloneable接口,因为这个优化的核心,...
  • 最近写代码的时候,一直在思考这个问题,现在空了,写篇文章记录一下吧! 先来看一段源代码,三种场景:public static List<Demo> for1(){ System.out.println("1."+System.... List<Demo> demos = new
  • Java中创建对象数组

    千次阅读 2021-01-16 16:52:24
    如果一个数组的元素是对象类型,则称该数组为对象数组。当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象。 2.对象数组的定义和使用: 对象数组的定义与一般数组的...
  • 一、****************************...b1:反射属于动态编译,意思就说只有到运行时才会去获得该对象的实例,大多框架都是使用反射获取对象实例,如Spring 二、*****************************************************...
  • java中对象

    千次阅读 多人点赞 2018-10-31 17:31:41
    java中对象 1.什么对象?  所谓的对象其实就是通过java类所产生的实体。  例如:盖楼房的图纸就是Java类,根据这个图纸修建起来的能够被看见,被使用的这个实际存在的楼房,就是相当于是用过这个图纸得到的...
  • java对象的销毁详解

    千次阅读 2021-03-01 07:52:24
    在创建对象的时候,用户必须使用new操作符为对象分配内存,但是要注意了,在清除对象的时候,由系统自动进行内存回收,不需要用户额外处理,这也是Java语言特色之一,在某种程度上方便了程序员对内存的管理。Java...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,851,344
精华内容 1,140,537
关键字:

java中new对象

java 订阅