「java所有对象数据汇总」java中所有数据都是对象

博主:adminadmin 2022-11-29 15:51:08 58

本篇文章给大家谈谈java所有对象数据汇总,以及java中所有数据都是对象对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中的对象类型与基本数据类型的区别?

ava.lang.Integer是一个类.对它的操作要通过类的方法

int是JAVA缺省的8中基本数据类型之一.不是类的对象.

int是基本数据类型,Integer是对int进行了封装的一个类。

声明为int的变量不需要实例化,声明为Interger的变量需要实例化

int是基本类型,Integer是包装类,也就是类。

Integer 是比int 更高级的 数据类型 为什么java中使用int 而不像vb中那样使用Integer

int是面向机器底层的数值类型,是Primitive类型的数据类型,而Integer是int的Warpper类,是面向对象的即OOP的对象类型。int 一般只用在数值计算中,而Integer是用在Java的其它要使用对象的地方,比如Map的Key与Value,List与Set的Element若要保存数值信息都要把int包装成Integer对象使用。

Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。

原始类型 封装类

boolean Boolean

char Character

byte Byte

short Short

int Integer

long Long

float Float

double Double

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

int 一般做为数值参数就够了

integer 一般做类型转换的时候用的较多

至于大小问题,一个是值,一个是对象,你感觉怎么比较大小?

求问在JAVA中:对象,实例,引用,分别是什么意思

一看就是新手,这些概念不需要可以去深究.一下是我的总结,也可以百度看看PDF的书,但是还是要多敲代码去理解.

对象:在java中所有的东西都是对象,访问任何方法都需要对象.对象好比是人,人有很多属性,比如性别,年龄等,要想知道这些数据,就要通过这个人去访问.

实例:针对对象来说,实例就是这个人的属性,每个人都是对象,那么这个人都是以个一个实例.

引用:是java内部(栈)中,相当于一个地址,运行java程序调用这些对象需要找到地址,通过地址去找这个对象.

java中如何取到一个对象的所有属性值,并且在创建一个相同的对象

对象的类不知道,里面属性的类型也不知道。我感觉我没救了 用反射机制吧,很轻松!比如说:只知道对象a,问你要a里面所有属性值 问题补充:udvs 写道a.getClass().getDeclaredFields()哥们,我要的是值,不是属性名,而且是私有的成员,公有的我能得到 问题补充:izhangh 写道 public static Object deepClone(Object obj) { try { ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(obj); // 从流里读回来 ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray()); ObjectInputStream oi = new ObjectInputStream(bi); return (oi.readObject()); } catch(Exception e) { } return obj; }不得不承认你是玩流高手这都想得到,但是回的还是原来的对象啊,对象里面的私有属性值还是得不到啊 问题补充:zhanghaiyangruijie 写道这个用反射有点浪费了。。不知道这样能不能解决这个兄弟的问题package com.zhy.test.prototype; public class TestClone { /** 原型模式 * @param args */ public static void main(String[] args) { try { new TestClone().cloneObject(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } public void cloneObject() throws CloneNotSupportedException { Person p = new Person(); Man man = new Man(); man.setSalory("111123"); p.setName("zhangfei"); p.setMan(man); //man.setSalory("122335");//(1) Person pp = p.getClonePerson(p); man.setSalory("122335");//(2) pp.setName("aa"); System.out.println("pp.getName()= " + pp.getName() + " pp.man.getSalory()= "+pp.getMan().getSalory()); System.out.println("p.getName()=" + p.getName()+" p.man.getSalory()= "+p.getMan().getSalory()); } } class Person implements Cloneable { private String name = ""; private Man man; public String getName() { return name; } public void setName(String name) { this.name = name; } public Person getClonePerson(Person p) throws CloneNotSupportedException { Person pp = (Person) p.clone(); return pp; } public Man getMan() { return man; } public void setMan(Man man) { this.man = man; } public Object clone() throws CloneNotSupportedException{ Person p = (Person) super.clone(); p.man = this.getMan().getCloneMan(this.getMan()); return p; } } class Man implements Cloneable{ private String salory = ""; public String getSalory() { return salory; } public void setSalory(String salory) { this.salory = salory; } public Man getCloneMan(Man man) throws CloneNotSupportedException{ Man ma = (Man)man.clone(); return ma; } } 见解独到,但是有违提议,可以鼓励鼓励 问题补充:ouchxp 写道新手.....虽然昨天我也是..... 这段代码你可以执行一下试试. import java.lang.reflect.Field; import java.lang.reflect.Modifier; import sun.misc.Unsafe; public class TestClass { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(String[] args) throws Exception { TestClass tc = new TestClass(); tc.setName("oUCHxP"); //现在是一个未知类型的对象(模拟一下) Object obj = tc; //获取对象类型,可以看到输出是TestClass类型 Class c = obj.getClass(); System.out.println(c); //创建此类型的空对象 Field fu = Unsafe.class.getDeclaredField("theUnsafe"); fu.setAccessible(true); Unsafe us = (Unsafe) fu.get(null); Object newObj = us.allocateInstance(c); //可以看到name是空的 System.out.println("newObj.name: " + ((TestClass) newObj).getName()); //获取所有成员(包括private)的值,并拷贝到新对象中 Field[] fields = c.getDeclaredFields(); for (Field f : fields) { //不拷贝static成员和final成员 if (Modifier.isStatic(f.getModifiers()) || Modifier.isFinal(f.getModifiers())) { continue; } f.setAccessible(true); Object fieldValue = f.get(obj); f.set(newObj, fieldValue); } //再看一下新对象里的内容,private成员也被复制过来了 System.out.println("newObj.name: " + ((TestClass) newObj).getName()); } }果然是老鸟,让你猜着了,但是呢,我也是本着不用反射来解题的。所以请各位再想想办法来解决这难题。 问题补充:ouchxp 写道zhanghaiyangruijie 写道这个用反射有点浪费了。。

java中的单向链表,栈,串,有哪些对象使用的这些数据结构,还有树,图,广义表这些在JAVA有哪些对象

JAVA把数据结构简化了,提供了不少集合类(collection),用的最多的就是LIST和MAP这个两个接口。LIST和MAP各自对应了多个实现它们的类,比如ArrayList,HashMap等等。其中List就很像C里的链表,它有顺序存放和无序存放的对象。好像没有几个类能严格符合你说的几种数据结构,你可以自己写类来实现相同的功能。没有这么多复杂的数据结构,JAVA才体现出简单易学的特点啊。

Java堆中到底存放些什么?

当Java程序创建一个类的实例或者数组时,都在堆中为新的对象分配内存。虚拟机中只有一个堆,所有的线程都共享他。Java中所有的对象都存放在堆中,包括class对象和异常对象。 那么这些对象中有存放些什么呢?实例数据是肯定的,还有就是当通过对象访问类信息时就必须有一个指针将对象和方法区中的类信息关联起来,关联的方法有多种。一个可能的堆的设计是将堆分为两个部分:引用池和对象池。一个对象的引用就是指向引用池的本地指针。每一个引用池中的条目都包含两个部分:指向对象池中对 象数据的指针和方法区中对象类数据的指针。这种设计能够方便Java虚拟机堆碎片的整理。当虚拟机在对象池中移动一个对象的时候,只需要修改对应引用池中 的指针地址。但是每次访问对象的数据都需要处理两次指针。下图演示了这种堆的设计。 另一种堆的设计是:一个对象的引用就是一个指向一堆数据和指向相应对象的偏移指针。这种设计方便了对象的访问,可是对象的移动要变的异常复杂。下图演示了这种设计 无论虚拟机实现者使用哪一种设计,他都可能为每一个对象保存一个类似方法列表的信息。因为他可以提升对象方法调用的速度,对提升虚拟机的性能非常重要,但 是虚拟机的规范中比没有要求必须实现类似的数据结构。下图描述了这种结构。图中显示了一个对象引用相关联的所有的数据结构,包括: 1)、一个指向类型数据的指针 2)、一个对象的方法列表。方法列表是一个指向所有可能被调用对象方法的指针数组。方法数据包括三个部分:操作码堆栈的大小和方法堆栈的本地变量区;方法的字节码;异常列表。 除此之外,堆上的对象数据还有一种逻辑部分,那就是对象锁,这是一个互斥对象。虚拟机中的每个对象都有一个对象锁,它被用于协调多个线程访问同一个对象时的同步。只有当第一次需要加锁的时候才分配对应的锁数据,但这时虚拟机需要用某种间接方法来联系对象数据和对应的锁数据。这也是为什么很多对象在其整个生命周期内都没有被任何线程加锁。除了实现锁所需要的数据外,每个Java对象逻辑上还与实现等待集合(wait set)相关联。 最后一种数据类型-是与垃圾收集器有关的数据。垃圾收集器必须以某种方式跟踪程序引用的每个对象,这个任务不可避免的要附加一些数据给这些对象。

java所有对象数据汇总的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中所有数据都是对象、java所有对象数据汇总的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。