学了好长时间的java对于java中的对象一直没有理清楚,今天楼主对java中的对象进行了整理,希望对大家有帮助。

理解和使用java中的对象,我们首先了解一下构造方法与对象的创建。  类是面向对象语言中最重要的一种数据,可以用类声明变量。面向对象语言中,用类声明的变量称为对象。

和基本数据类型不同,在声明对象后,还必须创建对象,即为声明的对象分配所拥有的的变量(确定对象所具有的属性),当时使用一个类创建一个对象时,也叫给出了这个类的一

个实例。通俗的讲,类是创建对象的模板。

1. 构造方法

构造方法是类中的一种特殊方法,用类创建对象时需要使用它的构造方法,类中的构造方法必须和它所在类的名字完全相同,且没有类型。
 
class Person
{
int age;
String name; Person(){ }
}

在Person类中Person()是一个构造函数,其实这个方法是被java隐藏的,也就是说如果类中没有编写构造方法,系统会默认该类有一个无参数,且方法体中没有语句的构造函数。如

Person类中的Person(){ },如果类里定义了一个或多个构造函数,那么java就不提供默认的构造方法了。如下:

class Person
{
int age;
String name; Person(){
age=22;
name="刘德华";
} Person(int age,Stirng name){
System.out.println("the man age is"+age+"name: "+name);
}
}

2 创建对象

(1)对象声明
一般格式为:
 
类的名字   对象的名字;
如:
Person person;
 
(2)为声明的对象分配变量
1.使用new运算符和类的默认构造方法为声明的对象分配变量,即创建对象。

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

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

class Person
{
int age;
String name; Person(int age,Stirng name){
System.out.println("the man age is"+age+"name: "+name);
} void speak(String name){
System.out.println(name);
}
}
public class OuXiang
{
public static void main(String[] args) {
Person liudehua; //声明对象
liudehua=new Person(53,"刘德华"); //为变量分配变量(使用new和类中的构造方法)
}
}

3 对象的内存模型

当用Person类声明变量liudehua,即对象liudehua时,Person liudehua; 内存模型如下
 
liudehua
null
声明变量后,liudehua的内存中还没有任何数据,这时的liudehua还是一个空对象,对象还不能使用,因为他还没有实体,必须为之分配变量,即为对象分配实体。
 
liudehua=new Person(53,"刘德华"); 此时就为对象分配了变量。
new运算符为变量age,name分配内存后,将返回一个引用给对象变量liudehua,也就是返回上图中0xAC12(相当于一个身份id)该引用包含代表着成员变量内存位置及相关重要信
 
息。

【转】java对象——new对象的理解的更多相关文章

  1. 对Java“一切皆对象”的理念的理解

    在从HelloWorld到面向对象中,我们将int, float, double, boolean等称为基本类型(primitive type),也就是特殊的类.我们可以将一个整数理解称为一个int类 ...

  2. 理解Java中的对象,变量和方法

    1.对象的创建和销毁 1.1 对象的创建 这里只介绍创建对象与构造方法的关系 (1).每实例化一个对象就会自动调用一次构造方法,实质上这个过程就是创建对象的过程,准确的说,在Java语言中使用new操 ...

  3. 深入Java虚拟机--判断对象存活状态

    程序计数器,虚拟机栈和本地方法栈 首先我们先来看下垃圾回收中不会管理到的内存区域,在Java虚拟机的运行时数据区我们可以看到,程序计数器,虚拟机栈,本地方法栈这三个地方是比较特别的.这个三个部分的特点 ...

  4. 浅谈Java中的对象和引用

    浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...

  5. 解析Java类和对象的初始化过程

    类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...

  6. JVM调优-Java中的对象

    Java对象的大小 基本数据的类型的大小是固定的,这里不做详细说明.对于非基本类型的Java对象,其大小就值得商榷. 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没 ...

  7. Java数据类型和对象的引用

    在Java中,变量分为两类: 1.基本类型变量,java是传递的副本 2.一切对象型变量,传引用副本的实质是复制指向地址的指针 a.基本类型引用 public class BasicTransmit ...

  8. Java I/O 对象序列化

    我们知道对象的持持久化有三种方式: 1: 对象序列化 2: XML 3: 数据库技术 序列化可以帮助使得对象的生命周期不取决与程序是否正在执行,它可以生存于程序的调用之间. 只要将任何对象序列化到单一 ...

  9. Java中String对象的不可变性

    首先看一个程序 package reverse; public class Reverse { public static void main(String[] args) { String c1=n ...

随机推荐

  1. noip2013华容道

    题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 ...

  2. Java网络编程之InetAddress和URL

    在Java中提供了专门的网络开发程序包---java.net,java的网络编程提供了两种通信协议:TCP(传输控制协议)和UDP(数据报协议). 一.IP(Internet Protocol) 与I ...

  3. 2017年记录CS+CV

    2017年3月开学,始终感觉自己计算机基础薄弱,加上之前自己也开始对机器学习,深度学习有一些了解,始终感觉没有入门.自己开始规划系统学习计算机软件(CS)和计算机视觉(CV)的基础知识.@2017/9 ...

  4. Java基础 笔记(四)

    泛型: 泛型:通过<数据额类型>来接受一种引用数据类型.作用在编译时.使用检查 加入集合的对象是否属于该类型,从而把执行时的问题转换为编译时异常.提高程序的安全性 避免抛出 ClassCa ...

  5. 【转载】C#之C#、.NET Framework、CLR的关系

    C#..NET Framework.CLR的关系 很多人没有将C#..NET Framework(.NET框架).CLR(Common Language Runtime,公共语言运行库)这三者之间的关 ...

  6. 【C语言】统计数字在排序数组中出现的次数

    //数字在排序数组中出现的次数. //统计一个数字在排序数组中出现的次数.比如:排序数组{1,2,3,3,3,3,4,5}和数字3,因为3出现了4次,因此输出4. #include <stdio ...

  7. Boost源代码学习---weak_ptr.hpp

    weak_ptr是辅助shared_ptr的智能指针. 就像它的名字一样.是个"弱"指针:仅有几个接口.仅能完毕非常少工作.它能够从一个shared_ptr或weak_ptr对象构 ...

  8. Xamarin.Android 记事本(二)自定义AlertDialog

    导读 1.自定义一个AlertDialog 2.添加一条数据 正文 记事本应当有一个添加功能,这里我打算在右上角放一个item,然后点击这个item弹出一个对话框,输入名称,点击确定跳转到另一个act ...

  9. debian apt-get工作的原理

    1 apt-get update apt-get update并没有将远程仓库的包都下载到本地,而是通过访问远程仓库创建或者更新了远程仓库的本地索引,索引文件放在/var/lib/apt/lists目 ...

  10. 锁粒度 Deadlocks

    锁粒度 MySQL :: MySQL 5.7 Reference Manual :: 14.5.2.4 Locking Reads https://dev.mysql.com/doc/refman/5 ...