Java学习点滴——对象实例化】的更多相关文章

基于<Java编程思想>第四版 构造与析构 在C++中通过构造函数和析构函数来保证:对象在使用前被正确初始化,在使用后被正确回收.Java中同样存在构造函数,但是没有析构函数.之所以没有析构函数是因为对象实际的存储期由GC决定,程序员无法明确析构函数何时会被执行. GC会在回收对象前执行Object的protected void finalize()方法,子类可以通过重写finalize()方法来清理资源.但是因为GC回收对象时间的不确定性,加上finalize()本身可能引入的问题,所以并不…
一个对象实例化过程:Person p = new Person();1,JVM会读取指定的路径下的Person.class文件,并加载进内存,并会先加载Person的父类(如果有直接的父类的情况下).2,在堆内存中的开辟空间,分配地址.3,并在对象空间中,对对象中的属性进行默认初始化(基本类型赋初值).4,调用对应的构造函数进行初始化.5,在构造函数中,第一行会先到调用父类中构造函数进行初始化.6,父类初始化完毕后,在对子类的属性进行显示初始化.7,在进行子类构造函数的特定初始化.8,初始化完毕…
      本文是看过<head first Java>之后的一点感悟,写点东西帮忙以后回忆,Java目前在我的工作中用到还不多,而我又对面对对象的编程非常的感兴趣.曾经在MFC平台上写过一个比较大的程序,但是看了本书后,发现之前程序中漏洞百出,而且对面对对象的思想理解不深刻,感觉需要重新学习一遍.C++和JAVA的面对对象还是很有差距的,但是他们的基本思想是相同,抓住思想再学习语言会更高效.http://www.cnblogs.com/jsgnadsj   类 面向过程编程语言的局限:  …
基于<Java编程思想>第四版 前言 "程序就是算法加数据结构",而算法就是控制语句加操作符,编写一个程序就是使用控制语句加操作符去操作数据结构,因此我从Java的控制语句.操作符以及如何组织数据结构开始入手.因为有C/C++的基础,所以不免会以对比的方式去理解Java. 控制语句 除了没有goto,Java的控制流程的关键字和C++是一样的,很好理解.不过Java中的break和continue除了C++的正常作用外(跳出或继续当前循环),还有类似C++中goto的功能,…
对象和类 从认识的角度考虑是先有对象后有类.对象,是具体的事物.类,是抽象的,是对对象的抽象. 从代码运行角度考虑是先有类后又对象.类是对象的模板. 对象:对象是类的一个实例,有状态和行为. 类:类是一个模板,它描述一类对象的行为和状态. 下图中男孩(boy).女孩(girl).为类(class),而具体的每个人为该类的对象(object): 通过上图可以定义一个Java类: /* 定义名为 Boy 的类,该类包含两个属性和两个行为 */ public class Boy{ String nam…
前言 一切从下面这段代码开始 public static void test(String[] agrs){ Integer a = 1; Integer b = 2; System.out.println("a=" + a + ", b=" + b); swap( a, b ); System.out.println("a=" + a + ", b=" + b); } public static void swap( Int…
基于<Java编程思想>第四版 前言 虽然Java的泛型在语法上和C++相比是类似的,但在实现上两者是全然不同的. 语法 Java只需要一个<>就可定义泛型.在<>中可以使用任意符合Java语法要求的字符作为类型的标识,可以定义泛型类.泛型接口.泛型方法等. class A<T>{ T a; public <Q> void foo(Q a){ } } interface B<T>{ void foo(T a); } 实现 Java的泛…
基于<Java编程思想>第四版 前言 我们要操作一个类实例对象时,一般都要先知道这个类有哪些方法或者成员变量.反射就是在我们不知道这个类有哪些方法或成员变量时,使用特定方式得到类的这些信息,再根据特定规则去调用对应的方法操作类实例对象. 这中间有两个未知条件 如何记录类信息 如何确定规则 类信息是通过Class记录的,规则是由程序员定的. Class Class是一个记录类信息的类,每个类(包括Class)都会有一个Class对象.其实现也很好猜测和理解:编译器扫描完代码,就能知道类的具体信息…
转自:Edward_qing_Lee 的专栏 http://blog.csdn.net/edward_qing_lee/article/details/8249102 一.java 方法参数 理解: 方法参数 可理解为: 对于输入的实参 进行了一份拷贝,  (1) 若方法参数为基本类型,则在栈内存中开辟新的空间,所有的方法体内部的操作都是针对这个拷贝的操作,并不会影响原来输入实参的值 (2)若方法参数为引用类型,该拷贝与输入实参指向了同一个对象,方法体内部对于对象的操作,都是针对的同一个对象.…
对象数组 今天在写一个代码,才发现自己对于对象数组的理解是不够的,那么就讲讲自己现在的理解. 对于数组中的每一个元素都是一个针对对象的引用 他会指向你的具体的一个堆上的对象,它本身知识一个地址值,与其很相似的是C语言中的指针,都是指向一个地址: import java.util.Arrays; public class Main{ public static void main(String[] args){ Ob[] o = new Ob[3]; o[0].x=2; // 错误的使用方法,必须…
Java存在垃圾回收机制,JVM会去回收垃圾,释放资源,而不是像C++一样有程序员去完成 垃圾回收机制的特点 垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(例如数据库连接.网络IO等资源) 程序无法精确控制垃圾回收的运行,垃圾回收会在合适的时候进行 在垃圾回收机制回收任何对象之前,总会先调用它的finalize()方法,该方法可能使该对象重新复活(让一个引用变量重新引用该对象),从而导致垃圾回收机制取消回收 对象在内存中的状态 根据引用变量所引用的状态,可分为以下三种: 可达状态…
假设现在有这么一个父类: public class Person{ public Person(){} public String name = "tom"; public int age = 1; public int sex = 0; public void showInfo(){ System.out.println(this.name); System.out.println(this.age); System.out.println(this.sex); } public v…
反射之中所有的核心操作都是通过Class类对象展开的,可以说Class类是反射操作的根源所在,但是这个类的实例化对象,可以采用三种方式完成. java.lang.Class类的定义: public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement, TypeDescriptor.OfField<Class<?>>,…
前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使用. 类 那么,这里为什么要先将类,而不是像之前一样先讲对象呢,那是因为在前面的学习中,我们知道了,对象是类的一个实例.类是封装兑现属性和行为的载体,所以对象的一切都在类之中,对象的属性,行为的调用都得先通过实例才能使用,它们是一个包含关系,对象是依赖于类的. 类在Java中的创建 我们都知道,在我…
目录: --- 对象 --- 类 --- 源文件的声明规则 --- Java 包 对象: 对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类: 类是一个模板,它描述一类对象的行为和状态.一个类可以包含以下类型变量: 局部变量:在方法.构造方法或者语句块中定义的变量被称为局部变量.变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁. 成员变量:成员变量是定义在类中,方法体之外的变量.这种变量在创建对象…
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { String name; String color; public void eat(){ System.out.println("吃饭"); } } (二)对象 对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字:行为有:吃饭等 1.创建对象: 声明:声明一个对象,…
1,读此文章前我假设你已经读过: android NDK 实用学习-获取java端类及其类变量 android NDK 实用学习-java端对象成员赋值和获取对象成员值 2,java端类对象的构造: ①首先获取类; ②获取类的无参构造函数: jmethodID initID = env->GetMethodID(jcSetDataMgr, "<init>", "()V"); ③构造类实例: jobject jresult = env->New…
最近在看<Java编程思想>,下面按照最近看书的顺序梳理一下心得,由于是初次学习,大部分心得是摘抄自书中: 1. Java中,每个变量都是一个对象. 在创建时首先在内存的堆栈中创建一个该对象的引用,然后调用该对象的构造函数在内存的堆上面建立该对象,并将该对象与堆栈中的引用相连接. 例如:Stack test = new Stack(); 在等号左面 Stack test 首先创建了一个对象test的引用,然后  new Stack() 在堆中申请一块内存空间,并调用构造函数创建了一个对象,最后…
Java中创建(实例化)对象的五种方式  1.用new语句直接创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法.如:Object obj = Class.forName("java.lang.Object").newInstance(); 4.调用对…
本章学习目标: 区分基本类型与类类型 了解对象与参考的关系 从打包器认识对象 以对象观点看待数组 认识字符串的特性 一."=" 和 "==" 当=用于基本类型时,是将值复制给变量,当==用于基本类型时,是比较两个变量储存的值是否相同,如下面的程序: int a = 10; int b = 10; int c = a; System.out.println(a == b); //显示true System.out.println(a == c); //显示true 如…
Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法.如:Object obj = Class.forName("java.lang.Object").newInstance(); 4.调用对象的cl…
JAVA对象实例化的方法 New对象实例 // 直接new对象实例 Productor productor = new Productor(); 反射机制 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制. 反射机制创建对象分为两种,一种是Class类的newInstance(),另一种是java.lang.reflect.Constructor类…
1.对象和类(Object and class): 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 面对对象编程是java非常重要的一部分,作者本身之前学过c++所以省略了部分基础,详见例子:https://www.runoob.com/java/java-object-classes.html 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类:类是一个模板,它描述一类对象的行为…
大家往往听说  子类继承了父类就有了父类中的所有的非私有的属性,但是怎么就有了父类的属性了呢 ?且听下面分解 子类对象实例化的过程: 1 从结果上来看:(继承性) 子类继承了父类以后 就获取了父类中声明的属性和方法 创建子类对象 在堆空间中 就会加载所有父类中声明的属性 2 从过程来上看 : 当我们通过子类的构造器创建子类的对象是 一定会直接或间接的调用其父类的构造器 进而调用父类的父类的构造器.直到调用了java.langObject类中空参的构造器为止,正因为加载过所有的父类结构 所以才可以…
关键字:super 1.super 关键字可以理解为:父类的2.可以用来调用的结构:属性.方法.构造器3.super调用属性.方法:3.1 我们可以在子类的方法或构造器中.通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法.但是,通常情况下,我们习惯省略"super."3.2 特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用"super.属性&qu…
目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的实例化过程 对象的实例化过程是分成两部分:类的加载初始化,对象的初始化 要创建类的对象实例需要先加载并初始化该类,main方法所在的类需要先加载和初始化 类初始化就是执行<clinit>方法,对象实例化是执行<init>方法 一个子类要初始化需要先初始化父类 2 类的加载过程 类的加载…
假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况. 但是如果你复制的是一个对象,情况就有些复杂了. 假设说我是一个beginner,我会这样写: class Student { private int number; public int getNumber() { return number…
概述:本文介绍以下java五种创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式. 2.使用Class类的newInstance方法 3.运用反射手段,调用java.lang.reflect.Constructor类的newInstance()实例方法. 4.调用对象的clone()方法. 5.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法. 一.使用new关键字 这是最常见也是最简单的创建对象的方式了.通过这种方式…
1.private ,protected,static不能用来修饰interface. 2.java在处理基本数据类型(比如int ,char,double)时,都是採用按值传递的方式运行.除此之外的其他类型都是按引用传递的方式运行.对象除了在函数调用时时引用传递,在使用"="赋值时也是採用引用传递. 3.怎样在java中进行对象的复制.而不是引用.举例: class Obj implements Cloneable{ private int a=0; public int getA(…
2.4子类对象实例化的全过程 public class TestDog { public static void main(String[] args) { Dog d = new Dog(); d.setAge(10); d.setName("小明"); d.setHostName("花花"); System.out.println("name:" + d.getName() + " age:" + d.getAge() +…