object

六、关键字

别等时光非礼了梦想. 提交于 2020-01-13 05:43:26
4.关键字: (1)this:this是一个关键字,存储了当前对象的内存地址 -->this对象,用来访问本类自己的属性和方法。 -->构造器中,给属性set值。 【1】 使用本类的属性 ,this.属性名, this可以省略不写 【2】 调用本类的方法 this.方法名() ,this可以省略不写 【3】 调用本类的构造方法, 要求必须是构造方法中的第一句代码 this()—》调用本类的无参构造方法 this(实参列表)调用本类的带参构造方法 【4】 当局部变量与成员变量名称相同时,this代表成员变量 (2)continue:跳出本次循环继续下一次循环; break:跳出循环体,继续执行循环外的函数体;在switch...case中终止与下一个case的比较; (3) return: 跳出整个函数体,函数体后面的部分不再执行。 (4)final关键字: 修饰类:final修饰的类不能被继承,其中的属性可以自由定义类型,但是其中的方法默认被final,不能修改。(除非真的不想其被继承,出于安全问题,一般不设置为final); 修饰方法:如果只有在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的。 修饰属性:基本数据类型:值不能被修改,固定值。引用数据类型:在栈内存中的存储的地址不变, 对于一个final变量,如果是基本数据类型的变量

java深拷贝和浅拷贝的区别

◇◆丶佛笑我妖孽 提交于 2020-01-13 05:18:33
深拷贝和浅拷贝的区别 拷贝,一眼看过去,最简单的意思就是复制吧!浅拷贝是只拷贝一层,深层次的对象级别就只拷贝引用。 深拷贝是拷贝多层,每一级别的数据都拷贝出来。也就是说,基本数据类型其实不存在深浅拷贝的问题,只有对象和数组才存在深浅拷贝的问题。 浅拷贝 一般拷贝就是从新赋值。声明个数据直接用另外一个对象赋值。 弊端 当遇到复杂对象的时候,复制的只是对象的指针,并没有重新开辟大的空间进行复制。这时候造成的影响就是对两个指针进行数据操作的时候,操作的是同一个数据内容,相互之间是受影响! 深拷贝 需要连指针到内容都进行复制,两个指针指向两个空间的内容。各自操作已经不受影响。 方法一: 浅拷贝的复制就是直接复制赋值就可以了。 方法二: Object.assign是ES6的新函数。Object.assign() 方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。但是 Object.assign() 进行的是浅拷贝,拷贝的是对象的属性的引用,而不是对象本身。 多层对象的拷贝方式 方法一 通过JSON转换 用JSON.stringify把对象转成字符串,再用JSON.parse把字符串转成新的对象。但是这种方法也有不少坏处,譬如它会抛弃对象的constructor。也就是深拷贝之后,不管这个对象原来的构造函数是什么,在深拷贝之后都会变成Object

Compiling java source code to native exe

此生再无相见时 提交于 2020-01-13 05:11:24
问题 Is it possible to compile java source code into native exe like C++? Like C++ all headers files are included during compilation, all java library files that are required should be attached in that exe, and this exe should not be a bytecode but native exe instead and run without jvm. So all I want to know is something like.. if I can replace all C++ syntax with Java syntax and compile to an exe file like one created by C++ compiler which run directly. Note: I am not talking about packers that

Compiling java source code to native exe

痞子三分冷 提交于 2020-01-13 05:11:05
问题 Is it possible to compile java source code into native exe like C++? Like C++ all headers files are included during compilation, all java library files that are required should be attached in that exe, and this exe should not be a bytecode but native exe instead and run without jvm. So all I want to know is something like.. if I can replace all C++ syntax with Java syntax and compile to an exe file like one created by C++ compiler which run directly. Note: I am not talking about packers that

Reference Nested JavaScript Object

一曲冷凌霜 提交于 2020-01-13 04:56:26
问题 I have this code: var string = { nameString : "nameValue", nameString2 : "nameValue2", nameString3 : "nameValue3", datathing : 0, }; var data = { data : 1, dataNum2 : 2, dataNum3 : 3, dataNum4 : 4, }; var thing = { datathing1 : 10, datathing2 : 20, datathing3 : 30, datathing4 : 40, }; var object = { object1 : string, data1 : data, thing1 : thing, }; Why do neither of these means to access the data work: alert("testReference= " + object['object1']['string']['nameString']); alert("testReference

Enum枚举

扶醉桌前 提交于 2020-01-13 04:53:52
枚举 没想到一个小小的枚举,也有这么深的知识。 为了获取枚举上一个废弃标识注解,找遍了百科,坑死我了。 还好公司有大佬,破了难题。很奇怪他是怎么知道用getField的。 --一路追踪,原来一开始想的都是内部类,怎么得到实例对象,一开始就偏了。 终于明白了。故记下本次学习历程。再次明白了关键字搜索的重要性。 1、枚举基本介绍 参考博文:-- https://www.iteye.com/blog/whitesock-728934 https://wenku.baidu.com/view/5ddd914fb307e87100f69603.html https://www.cnblogs.com/draem0507/p/4110987.html 1) Enum声明了name()方法和oridinal()方法,分别用于返回枚举值的名称和该枚举值在枚举类型中声明的顺序(从0开始)。 2)单例的实现 序列化过程中写入流的只有name ;反序列化过程中通过调用Enum.valueOf(Class<T> enumType, String name)静态方法构造枚举值,从而保证了枚举值的单例性。 3)ENUM$VALUES:是个private static final的数组。在枚举类初始化的时候,会实例化所有的枚举对象然后按顺序放在这个数组中 2、枚举的反射 参考博文:- https://blog

Java反射机制

 ̄綄美尐妖づ 提交于 2020-01-13 04:36:05
一切的操作都将使用Object完成,类,数组的引用都可以使用Object来接收 1,认识Class类 以前要是想知道一个类中的属性,成员变量,方法等等的信息的话,需要通过new这个类的对象才能得到这些信息,但是在Java中,也允许一个实例化对象找到一个类的完整的信息,这个类就是Class类,Class类是继承Object类的. 正常方式: 引入需要的"包.类"名称 -->通过new实例化-->取得实例化对象 反射方式: 实例化对象-->getClass()方法(从Object类中继承而来),这里是得到Class类对象-->得到完整的"包.类"名称 getClass()这个方法的返回值是Class类,实际上该类是Java反射的源头 在 Class类中没有定义构造方法 ,那么得到Class类对象的方法有3种: (1)使用forName()的静态方法实例化对象 (2) 类.class (3)对象.getClass() package cn.reflect; class Demo{ } public class RefDemo01 { public static void main(String[] args) throws ClassNotFoundException { Class c1 = Class.forName("cn.reflect.Demo"); Class c2 =

volatile和synchronized

六眼飞鱼酱① 提交于 2020-01-13 03:35:05
volatile是变量修饰符,而synchronized则是作用于代码,方法和变量。 int i1; int geti1() {return i1;} volatile int i2; int geti2() {return i2;} int i3; synchronized int geti3() {return i3;} 1.geti1()是得到储存在当前线程中i1的数值,而多个线程又多份i1变量的拷贝,这些i1可能不相同。(另一个线程可能已经改变了它线程内的i1值,而这个值可以和当前线程中的i1值不相同。) 在JAVA内存模型的,有main memory(主内存区域),存放着变量当前的准确值,每个线程也有自己的memory(例如寄存器),为了性能,一个线程会在自己的memory中保存要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory的值,或者main memory的值不一致的情况。因此实际上存在一种可能:main memory的值i1值是1,线程1里的i1是2,线程2里的i1值是3,这在线程1和线程2都改变了他们各自的i1值,而且这个改变还没来得及传给main memory 或其他线程时就会发生。 2.geti2() 得到的是main memory的i2数值。一个变量声明为volatile

实现Spring JDK代理和CGLIB代理

会有一股神秘感。 提交于 2020-01-13 02:51:06
JDK代理: JDK动态代理其实也是基本接口实现的。因为通过接口指向实现类实例的多态方式,可以有效地将具体实现与调用解耦,便于后期的修改和维护。 创建"Car"接口: package com . example . demo ; /** * 定义Car接口 */ public interface Car { void whatCar ( ) ; } 2.创建"Mazda"类,实现接口"Car",并实现方法"whatCar": package com . example . demo ; public class Mazda implements Car { @Override public void whatCar ( ) { System . out . println ( "I am Mazda" ) ; } } 3.创建一个动态代理类,需要实现InvocationHandler接口,代码中有详细注解: package com . example . demo ; import java . lang . reflect . InvocationHandler ; import java . lang . reflect . Method ; import java . lang . reflect . Proxy ; /** * 创建一个动态代理类

PHP Object Life Time

╄→尐↘猪︶ㄣ 提交于 2020-01-13 02:15:14
问题 I am using PHP 5.2. If I new an object at one page, when will this object be destructed? Is the object destructed automatic at the time that user go to another .php page or I need to call __destructor explicitly? 回答1: It will be destructed (unloaded from memory) at the end of the page load, or if you unset all references to it earlier. You will not have to destroy it manually since PHP always cleans up all memory at the end of the script. In fact, you should never call __destruct yourself.