Java 对象 及 对象的应用】的更多相关文章

程序计数器,虚拟机栈和本地方法栈 首先我们先来看下垃圾回收中不会管理到的内存区域,在Java虚拟机的运行时数据区我们可以看到,程序计数器,虚拟机栈,本地方法栈这三个地方是比较特别的.这个三个部分的特点就是线程私有的,它们随着线程的创建而诞生,也因线程的结束而灭亡.栈中的栈帧随着方法的进入和退出会有条不絮的执行着进栈和出栈.每一个栈帧中分配多少内存,基本上是在类结构确认下来的时候就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束或者线程结束…
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: “按照通俗的说法,每个对象都是某个类(class)的一个实…
假如说你想复制一个简单变量.很简单: 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…
Employee类: public class EmployeeTest { public static void main(String[] args) { // fill the staff array with three Employee objects Employee[] staff = new Employee[3]; staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15); staff[1] = new…
引用计数算法:   给对象添加一个引用计数器,每当有地方应用时,计数器值就加一,当引用失效时,程序计数器就减一,只要引用计数器的值为零时,就表示对象不可能再被引用,例如微软的 component object model技术就使用了这种用法.然而java中并没使用这种方式,因为这种方式很难解决对象中的循环引用问题. 例如对象A和对象B,其中对象A中有一个属性,叫instance,且A.instance=B,相反B中也有一个属性叫instance,且B.instance=A,这两个对象互相引用着对…
Java的常用对象① Java的常用对象有很多,这里只对lang包中常用的Object,Date(Calendar,DateFormat,Math),System,Runtime进行介绍.㈠Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现这个类的方法.在Object中equals(Object obj),hashCode(),toString()是每个类常用到的,getClass()被用来反射,finalize()是与垃圾回收有关的方法. 其余的not…
前言 好久没翻译simple java了,睡前来一篇. 译文链接: http://www.programcreek.com/2014/01/java-serialization/ 什么是对象序列化 在Java中,对象序列化指的是将对象用字节序列的形式表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,并且支持从数据库或文件中反序列化,从而在内存中重建对象: 为什么需要序列化 序列化经常被用于对象的网络传输或本地存储.网络基础设施和硬盘只能识别位和字节信息,而不能…
Java对象的大小 基本数据的类型的大小是固定的,这里不做详细说明.对于非基本类型的Java对象,其大小就值得商榷. 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小.看 下面语句: Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte.4byte是上面部分所说的 Java栈中保存引用的所需要的空间.而那8byte则是Java堆中对象的信息.因为所有的Jav…
在Java中,变量分为两类: 1.基本类型变量,java是传递的副本 2.一切对象型变量,传引用副本的实质是复制指向地址的指针 a.基本类型引用 public class BasicTransmit { public static void test(boolean test){ test =! test; System.out.println("in test : test = "+test); } public static void main(String[] args) { b…
我们知道对象的持持久化有三种方式: 1: 对象序列化 2: XML 3: 数据库技术 序列化可以帮助使得对象的生命周期不取决与程序是否正在执行,它可以生存于程序的调用之间. 只要将任何对象序列化到单一流中,就可以恢复出与我们写出时一样的对象网,并且没有任何重复复制的对象. 序列化技术包括序列化和饭序列化 我们可以通过实现Serializable接口来实现对象的序列化. class Data implements Serializable{ private int n; public Data(i…
java中直接打印对象,会调用对象.toString()方法.如果没有重写toString()方法会输出"类名+@+hasCode"值,hasCode是一个十六进制数 //没有重写toString()方法的类 class Person{ private String name; //构造方法 public Person(String name){ this.name = name; } } //重写了toString()方法的类 class Animal{ private String…
在从HelloWorld到面向对象中,我们将int, float, double, boolean等称为基本类型(primitive type),也就是特殊的类.我们可以将一个整数理解称为一个int类型的对象.int类型可以有赋值.加法.减法等操作接口.普通类型可以视作对基本类型的拓展.我们已经见过了基本类型作为数据成员.方法的参数.方法的返回值和方法内部的自动变量.自然的,普通类型的对象,比如Battery和Torch类的对象,也都可以用于这些地方. C语言中,可用的数据类型(基本上)已经预设…
使用java中的对象,分2步: 1.创建一个对象: 2.使用对象的属性和方法. 见下面的示例代码: package com.imooc; //1.定义一个类 public class Telphone { //2.属性(成员变量)有什么 float screen; float cpu; float mem; //3.方法干什么 void call(){ System.out.println("Telphone有打电话的功能!"); } void sendMessage(){ Syste…
首先看一个程序 package reverse; public class Reverse { public static void main(String[] args) { String c1=new String("abc"); String c2=new String("abc"); String c3=c1; System.out.println("c1==c2:"+ (c1==c2)); System.out.println(&quo…
转载请声明:原文转自:http://www.cnblogs.com/xiezie/p/5930503.html Android JNI之JAVA与C++对象建立对称关联 1.JAVA对象持有C++对象的指针 在JAVA类中创建一个int类型的变量(如int mObj),用于储存C++对象的指针 在创建C++对象(如MyCPlusObj)的本地方法中,将C++对象的指针存入JAVA变量中(mObj) JNIEXPORT void JNICALL Java_nativeMethod (JNIEnv…
主要参考文献:王映龙<Java程序设计> 一:类的语法 [修饰符]class<类名>[extends父类名][implements接口列表]{ //类体} 1:修饰符 可选值为: public:该类可以被任何类使用: abstract:该类为抽象类不能被实例化: final:该类为最终类,不能被继承: 省略:JAVA编译器会给它一个默认值,说明该类只能被同一个包中的其他类使用. 2:class<类名> 如果此类中含有main方法,则此Java文件的名字也要与此类名相同:…
1,读此文章前我假设你已经读过: android NDK 实用学习-获取java端类及其类变量 android NDK 实用学习-java端对象成员赋值和获取对象成员值 2,java端类对象的构造: ①首先获取类; ②获取类的无参构造函数: jmethodID initID = env->GetMethodID(jcSetDataMgr, "<init>", "()V"); ③构造类实例: jobject jresult = env->New…
Thinking In Java读书笔记--对象导论[对象]服务提供者==>将对象看做一个服务提供者[程序员分类][类创造者]/[客户端程序员] [访问控制存在的原因?][1]客户端程序员无法触及他们不该触及的部分[2]允许库设计者/类创造者改变类的内部工作方式而不用担心会影响客户端程序员 [Java访问指定词,access specifier]public private protected [组合,composition][聚合,aggregation][has-a,拥有关系] [继承]==…
类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只能被JVM调用,专门承担初始化工作. 初始化一个类必须保证其直接超类已被初始化. 并非所有类都拥有<clinit>()方法.以下类不会拥有<clinit>方法: 该类既没有声明任何类变量,也没有静态初始化语句. 该类声明了类变量,但没有使用类变量初始化语句或静态初始化语句初始化. 该类…
java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父类,全部class类都默认继承object. java中类是对一类"事物"的属性和行为一种抽象.比方人类就能够定义为一个Person类: public class Person { public int age;//年龄 public String name;//姓名 public int…
Java 反射 Class对象 @author ixenos 关键字:RTTI.动态绑定.动态加载.获得Class引用.泛型Class引用.newInstance的坑.JVM中的泛型类型信息 RTTI和动态绑定 RTTI即运行时类型识别 Run-Time Type Identification 或 Run-Time Type Information 例如,当把Shape对象放入List<Shape>的数组时会向上转型,但在向上转型为Shape的时候也会丢失Shape对象的具体类型,对于数组而言…
在某些情况下,一个客户不想或不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到了中介作用,这不仅仅使用代理模式,还可以实现适配器模式.装饰模式等. 代理对象内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象.同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装. 传统式上Java代理对象分为静态代理和动态代理,其实本质上是一样只是两种不同的编码方式,后者更有通用性. 静态代理 先来看看静态代…
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用. 堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中…
 Java面向对象  其他对象 知识概要:             (1)可变参数 (2)静态导入 (3)System (4)Runtime (5)Date  Calendar (6)Math 本篇我们主要以代码的形式来说明:简单明了 可变参数       JDK1.5版本出现的新特性. 方法的可变参数.        在使用时注意:可变参数一定要定义在参数列表最后面. 代码示例: class ParamMethodDemo { public static void main(String[…
Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串 主要方法 setProperty等同与Map接口中的put , setProperty(String key, String value) 通过键获取值, getProperty(String key) load() 加载配置文件, 加载完毕以后可以通过 g…
从第一章到第二章整整隔了一个月的时间,这速度也是慢的无语了.因为这个月负责开发公司一个SaaS类型APP,忙的昏天暗地终于上线了,这才有时间写个博客.本章还是以概念为主,有点枯燥重在理解. 第一节:对象 名词解释 OOA-Object Oriented Analysis-面向对象分析 OOD-Object Oriented Design-面向对象设计 OOP-Object Oriented Programming-面向对象程序设计 面向对象基本特性 万物皆可为对象:任何一件事物都可以表示为程序中…
上一章主要写到了JVM中运行时数据区域各个部分的功能及其作用.上一章说到了对象是分配在堆上面的,所以接下来我们写到对象在堆内存中是如何创建.如何布局.如何访问.1. 对象的创建 在java程序中对象的创建很简单只需要通过new关键字就能创建一个对象,例如:String str = new String().虽然我们看起来其实很简单,但是实际底层做的事情并不是我们表面看到的那么简单.当虚拟机遇到一个new指令时,首先将会去检查这个指令的参数是否在常量池中定位到一个类的符号引用,并且检查这个符号引用…
JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,有个更简便的方法,他们之间的拷贝可以通过copyProperties方法进行.方法如下: User u = new User();//source u.setUid("1"); u.setName("tom"); u.setAge("18"); Student s = new Student();//t…
一个类定义一个新的数据类型,也就是定义了一个逻辑框架,定义了它的成员之间的关系.可以通过这种类型来声明该类型的对象,通过new关键词来实例化对象,也就是为该类型的对象动态的分配物理内存空间,这个分配过程实在运行时发生的.内存空间是有限的,因此运行时分配内存有可能不成功,会造成运行时异常.     声明时的变量存储的是该内存空间的引用,也就是该内存空间的地址而不是该内存空间本身,这种变量之间的赋值,实际上是赋的引用的值.     实例化对象的时候,new后边是要实例化的类型的类名,紧跟类名之后的小…
1.引用计数算法 描述:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器值为0的对象就是不可能再被使用的. 特点:实现简单,判定效率高. 缺点:无法解决对象之间的相互循环引用的问题. 2.可达性分析算法 描述:通过一系列的成为“GC Roots”的对象作为引用起始点,从这些节点开始向下搜索,搜索所走过的路劲称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的. 可作为GC Roots的对象有: 虚拟机…