java对象——new对象的理解
来源:互联网 发布:淘宝运动鞋店 虎扑 编辑:程序博客网 时间:2024/06/08 05:39
学了好长时间的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的内存中还没有任何数据,这时的liudehua还是一个空对象,对象还不能使用,因为他还没有实体,必须为之分配变量,即为对象分配实体。
liudehua=new Person(53,"刘德华"); 此时就为对象分配了变量。
new运算符为变量age,name分配内存后,将返回一个引用给对象变量liudehua,也就是返回上图中0xAC12(相当于一个身份id)该引用包含代表着成员变量内存位置及相关重要信息。
2 0
- java对象——new对象的理解
- java 对象new的理解
- java代码感悟——关于new对象的时机
- 理解new 一个对象的含义
- java对象的理解
- java 对象的理解
- java new 对象
- JAVA 创建对象 new 的认识
- Java 对象的多态性——必须画图理解
- 深入理解java虚拟机——判断对象的“死活”
- 理解JAVA对象的初始化
- java 空对象的理解
- java面向对象的理解
- 理解Java的引用对象
- java中对象的理解
- 理解Java的面向对象
- JAVA面向对象的理解
- Java的面向对象理解
- <戏说春秋>第六关 大义灭亲
- 5.3.1
- KGDB环境搭建及调试
- iOS10---新特性以及适配点
- win7下mysql5.6遇到Access denied for user 'root'@'localhost'(using password :NO/YES)
- java对象——new对象的理解
- android进阶篇之引导页系列之viewpager实现Animation动画效果
- TensorFlow图片分类示例
- PostgreSQL 锁等待跟踪
- tomcat中get请求中文乱码
- Docker dubbo 服务注册
- Http下载文件,文件名中文乱码问题
- PHP获取系统时间慢几个小时解决方法(附date函数字符)
- Codeforces Beta Round #23 E. Tree(DP+高精度)