-
JAVA实例
2019-04-14 14:42:01JAVA实例的生成 1. 类(class)与对象(object) Class类注释对于Class的定义: Class 类的实例表示正在运行的 Java 应用程序中的类和接口。Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机...JAVA实例
1. 类(class)与对象(object)
Class类注释对于Class的定义: Class 类的实例表示正在运行的 Java 应用程序中的类和接口。Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。 可以知道每个class也是特殊的对象,不过是java虚拟机创建。class的获取:- 如 Class arrayListClass = ArrayList.class; Q:此处的class是什么(属性?关键字?)
- public final native Class<?> getClass(); 此方法来源于object
- 通过类加载器,显式加载类,获取class (显示加载,隐式加载,双亲委派,SPI,自定义classLoader)
类的生命周期
其中要注意的是 static修饰的成员变量,其生命周期与非static修饰的不同,于此产生的相互访问的限制。还需注意观察反编码后的this关键字。一个类卸载垃圾回收的条件:
JSP的热加载,可以参考。2. 实例生成
- 使用new关键字 (需要public修饰的构造方法,默认的无参构造会有被覆盖隐藏问题,使用框架时需要注意。也可以通过控制构造方法的访问修饰符,实现单例模式-懒汉|饿汉(双重检查锁)|静态内部类|枚举-。还有lombok插件(Q:编译时对代码修改?))
Q:访问修饰符可以通过暴力反射绕过,修饰符也代表着约定规则 - Class类的newInstance方法。
- Constructor类的newInstance方法
- clone(实现Cloneable接口)
- 序列化与反序列化(实现Serializable或Externalizable )(Json与对象的转换,fastJson)
Class类与反射:
反射相关类在 java.lang.reflect 包中,可以通过class获取定义在类中的相关参数,如 Constructor,Field,Method,WildcardType,annotation等信息,并提供相应的操作,如给field赋值,调用方法。3. object
object类的方法:
主要为:克隆,垃圾回收,获取class,equals与hash和toString,线程唤醒等待根据《深入理解java虚拟机》:
需要注意的是锁(无锁,偏向锁,轻量级锁,重量级锁。自旋锁,悲观锁,乐观锁,注意与mysql中的结合理解)
synchronized与对象锁,类锁实例对象与堆: jvm规范: 栈、堆、方法区(1.8改为元数据区)
-
栈: 每个线程一个栈,方法的调用即栈帧的创建销毁。尾递归的栈优化
-
堆:几乎所有的对象在此分配(JIT编译器、逃逸分析技术,采用栈上分配和标量替换优化技术,使得对象不局限于堆)。heap为垃圾收集的主要区域,故称“GC堆”,从GC回收角度可分为,新生代(1/3)、老年代(2/3),新生代细分为Eden、FromSurvival、ToSurvival(8:1:1)。
关于对象实例化时内存的分配:
指针碰撞(内存规整适用,GC采用带compact的,如serial,parnew)。
空闲列表(GC:cms这种基于mark-sweep)。多线程,内存分配指针移动,多线程问题:1.TABL(对象创建在线程相关内存块上,同时共享,解决分配时的冲突) 2.CAS配上失败重试保证更新原子性(频繁冲突会降低性能)。 -
方法区
存放:被虚拟机加载的 类信息、常量、静态变量、及时编译器编译后的代码。
对象在jvm中的存活时间是不一样的,并且差异大。根据存活时间进行位置分配,并采用相应的回收策略,由此产生的存储区域或连续,或分散,对象在分配内存区域时采用不同的方式。
-
java实例化对象
2016-05-15 08:35:19摘要:分享牛,分享牛分享,java类加载机制,java实例化对象,java实例化对象机制,java基础。java是如何实例化对象的呢?以及实例化对象的先后顺序是什么?下面我们以测试的方式说明.1.1. 声明父类public class A ...摘要:分享牛,分享牛分享,java类加载机制,java实例化对象,java实例化对象机制,java基础。
java是如何实例化对象的呢?以及实例化对象的先后顺序是什么?下面我们以测试的方式说明.
1.1. 声明父类
public class A { public A() { a1(); } public void a1() { System.out.println("a-a1"); } }
1.2. 声明子类
public class B extends A { int a=0; public B() { a=100; } @Override public void a1() { System.out.println("B a1():"+a); System.out.println("B a1()"); } }
1.3. 测视类
1.3.1. 第一种情况
new A();
输出结果如下:
a-a1
因为a类默认继承object所以实例化A类的时候,直接调用自身的a1()方法。
1.3.2. 第二种情况
new A().a1();
输出结果:
a-a1
a-a1
因为a类默认继承object所以实例化A类的时候,直接调用自身的构造方法a1()方法。因为又直接调用a1()方法,所以一共调用了2次。
1.3.3. 第三种情况
new B();
输出结果:
B a1():0
B a1()
因为B类继承a类,所以先去实例化父类A类,但是实例化A类的时候调用a1(),发现B类重写了A类中的方法,所以调用B类的a1(),这个时候b还没有被构造函数赋值,所以是默认的值。
1.3.4. 第四种情况
new B().a1();
输出结果:
B a1():0
B a1()
B a1():100
B a1()
因为B类继承a类,所以先去实例化父类A类,但是实例化A类的时候调用a1(),发现B类重写了A类中的方法,所以调用B类的a1()方法,实例化B对象实例的时候,构造方法已经初始化为100,所以第二次输出有值。
分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)
-
Java实例--汇总
2017-05-31 17:45:29Java 实例 本章节我们将为大家介绍 Java 常用的实例,通过实例学习我们可以更快的掌握 Java 的应用。 Java 环境设置实例 Java 实例 – 如何编译一个Java 文件? Java 实例 – Java 如何运行一个编译过的类文件? ...Java 实例
本章节我们将为大家介绍 Java 常用的实例,通过实例学习我们可以更快的掌握 Java 的应用。
Java 环境设置实例
- Java 实例 – 如何编译一个Java 文件?
- Java 实例 – Java 如何运行一个编译过的类文件?
- Java 实例 - 如何执行指定class文件目录(classpath)?
- Java 实例 – 如何查看当前 Java 运行的版本?
Java 字符串
- Java 实例 – 字符串比较
- Java 实例 - 查找字符串最后一次出现的位置
- Java 实例 - 删除字符串中的一个字符
- Java 实例 - 字符串替换
- Java 实例 - 字符串反转
- Java 实例 - 字符串查找
- Java 实例 - 字符串分割
- Java 实例 - 字符串小写转大写
- Java 实例 - 测试两个字符串区域是否相等
- Java 实例 - 字符串性能比较测试
- Java 实例 - 字符串优化
- Java 实例 - 字符串格式化
- Java 实例 - 连接字符串
Java 数组
- Java 实例 – 数组排序及元素查找
- Java 实例 – 数组添加元素
- Java 实例 – 获取数组长度
- Java 实例 – 数组反转
- Java 实例 – 数组输出
- Java 实例 – 数组获取最大和最小值
- Java 实例 – 数组合并
- Java 实例 – 数组填充
- Java 实例 – 数组扩容
- Java 实例 – 数组排序及查找
- Java 实例 – 删除数组元素
- Java 实例 – 数组差集
- Java 实例 – 数组交集
- Java 实例 – 在数组中查找指定元素
- Java 实例 – 判断数组是否相等
- Java 实例 - 数组并集
Java 时间处理
Java 方法
- Java 实例 – 方法重载
- Java 实例 – 输出数组元素
- Java 实例 – 汉诺塔算法
- Java 实例 – 斐波那契数列
- Java 实例 – 阶乘
- Java 实例 – 方法覆盖
- Java 实例 – instanceOf 关键字用法
- Java 实例 – break 关键字用法
- Java 实例 – continue 关键字用法
- Java 实例 – 标签(Label)
- Java 实例 – enum 和 switch 语句使用
- Java 实例 – Enum(枚举)构造函数及方法的使用
- Java 实例 – for 和 foreach循环使用
- Java 实例 – Varargs 可变参数使用
- Java 实例 – 重载(overloading)方法中使用 Varargs
打印图形
Java 文件操作
- Java 实例 - 文件写入
- Java 实例 - 读取文件内容
- Java 实例 - 删除文件
- Java 实例 - 将文件内容复制到另一个文件
- Java 实例 - 向文件中追加数据
- Java 实例 - 创建临时文件
- Java 实例 - 修改文件最后的修改日期
- Java 实例 - 获取文件大小
- Java 实例 - 文件重命名
- Java 实例 - 设置文件只读
- Java 实例 - 检测文件是否存在
- Java 实例 - 在指定目录中创建文件
- Java 实例 - 获取文件修改时间
- Java 实例 - 创建文件
- Java 实例 - 文件路径比较
Java 目录操作
- Java 实例 - 递归创建目录
- Java 实例 - 删除目录
- Java 实例 - 判断目录是否为空
- Java 实例 - 判断文件是否隐藏
- Java 实例 - 获取目录大小
- Java 实例 - 在指定目录中查找文件
- Java 实例 - 获取文件的上级目录
- Java 实例 - 获取目录最后修改时间
- Java 实例 - 打印目录结构
- Java 实例 - 遍历指定目录下的所有目录
- Java 实例 - 遍历指定目录下的所有文件
- Java 实例 - 在指定目录中查找文件
- Java 实例 - 遍历系统根目录
- Java 实例 - 查看当前工作目录
- Java 实例 - 遍历目录
Java 异常处理
- Java 实例 - 异常处理方法
- Java 实例 - 多个异常处理(多个catch)
- Java 实例 - Finally的用法
- Java 实例 - 使用 catch 处理异常
- Java 实例 - 多线程异常处理
- Java 实例 - 获取异常的堆栈信息
- Java 实例 - 重载方法异常处理
- Java 实例 - 链试异常
- Java 实例 - 自定义异常
Java 数据结构
- Java 实例 – 数字求和运算
- Java 实例 – 利用堆栈将中缀表达式转换成后缀
- Java 实例 – 在链表(LinkedList)的开头和结
- Java 实例 – 获取链表(LinkedList)的第一个
- Java 实例 – 删除链表中的元素
- Java 实例 – 获取链表的元素
- Java 实例 – 获取向量元素的索引值
- Java 实例 – 栈的实现
- Java 实例 – 链表元素查找
- Java 实例 – 压栈出栈的方法实现字符串反转
- Java 实例 – 队列(Queue)用法
- Java 实例 – 获取向量的最大元素
- Java 实例 – 链表修改
- Java 实例 – 旋转向量
Java 集合
- Java 实例 – 数组转集合
- Java 实例 – 集合比较
- Java 实例 – HashMap遍历
- Java 实例 – 集合长度
- Java 实例 – 集合打乱顺序
- Java 实例 – 集合遍历
- Java 实例 – 集合反转
- Java 实例 – 删除集合中指定元素
- Java 实例 – 只读集合
- Java 实例 – 集合输出
- Java 实例 – 集合转数组
- Java 实例 – List 循环移动元素
- Java 实例 – 查找 List 中的最大最小值
- Java 实例 – 遍历 HashTable 的键值
- Java 实例 – 使用 Enumeration 遍历 HashTable
- Java 实例 – 集合中添加不同类型元素
- Java 实例 – List 元素替换
- Java 实例 – List 截取
Java 网络实例
- Java 实例 – 获取指定主机的IP地址
- Java 实例 – 查看端口是否已使用
- Java 实例 – 获取本机ip地址及主机名
- Java 实例 – 获取远程文件大小
- Java 实例 – Socket 实现多线程服务器程序
- Java 实例 – 查看主机指定文件的最后修改时间
- Java 实例 – 使用 Socket 连接到指定主机
- Java 实例 – 网页抓取
- Java 实例 – 获取 URL响应头的日期信息
- Java 实例 – 获取 URL 响应头信息
- Java 实例 – 解析 URL
- Java 实例 – ServerSocket 和 Socket 通信实例
Java 线程
-
Java 实例 - 字符串反转
2019-09-12 09:52:16Java实例大全 @Test public void StringReverse(){ String str = "123456"; StringBuilder strb = new StringBuilder(str); System.out.println("反转前:"+strb); System.ou...Java实例大全
@Test public void StringReverse(){ String str = "123456"; StringBuilder strb = new StringBuilder(str); System.out.println("反转前:"+strb); System.out.println("反转后:"+strb.reverse()); }
结果:
反转前:123456
反转后:654321 -
Java 实例 - 字符串搜索
2019-09-12 10:05:15Java实例大全 @Test public void SearchString(){ String str = "哪有什么岁月静好,不过是有人替你负重前行"; int index = str.indexOf("负重前行"); if(index == -1){ System.out.println("没... -
Java 实例 - 字符串替换
2019-09-11 17:22:44Java实例大全 方法1:String对象replace()、replaceAll()、replaceFirst()根据内容替换 replace:参数为target和replaceent,也就是替换的目标对象和新对象 replaceAll:参数为regex额replacement,第二个参数... -
Java 实例 - 队列(Queue)用法
2016-04-11 16:57:32Java 实例 - 队列(Queue)用法 Java 实例 - 队列(Queue)用法 Java 实例 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。 LinkedList类实现了Queue接口,... -
Java 实例 - 数组排序及元素查找
2019-09-16 08:54:08Java实例大全 以下实例演示了如何使用sort()方法对Java数组进行排序,及如何使用 binarySearch() 方法来查找数组中的元素 @Test public void test3(){ int[] array = { 2, 5, -2, 6, -3, 8, 0, -7, -9, 4 }... -
谁有海康门禁主机的Java 实例啊?
2018-10-29 17:39:54谁有海康门禁主机的Java 实例啊? -
Java 实例 - 生成UUID(唯一ID)
2019-09-18 10:00:47Java实例大全 @Test public void test3(){ System.out.println(getUUID()); System.out.println(getUUID()); System.out.println(getUUID()); System.out.println(getUU... -
Java 实例 - 判断两数组比较是否相等
2019-09-18 09:33:43Java实例大全 @Test public void test6(){ int[] a = {1,2,3,4}; int[] b = {1,2,3,4}; int[] c = {1,2,4,3}; int[] d = {1,2,3}; System.out.println(Arrays.... -
java实例化对象时程序运行顺序
2014-08-11 17:23:07java实例化对象时程序运行顺序 -
Java 实例 - 删除字符串中的一个字符
2019-09-11 17:04:46Java实例大全 方法1:通过 substring()字符串截取方法,从新拼接返回截取后的字符串 @Test public void RemoveString(){ String str = "this is java"; System.out.println(removeCharAt(str,0)); } ... -
Java 实例 - 查找字符串最后一次出现的位置
2019-09-11 16:39:02Java实例大全 @Test public void SearchLastString(){ String str = "Hello World,Hello Java"; int lastIndex = str.lastIndexOf("Hello"); if(lastIndex == -1){ S... -
Java 实例 - 查找数组中的重复元素与次数
2019-09-16 16:19:13Java实例大全 利用map集合key不可重复原理,获取数组中重复元素 @Test public void test7(){ int[] array = {1, 2, 5, 5, 5, 5, 6, 6, 7, 2, 9, 2}; Map<Integer,Integer> map = findRepetition(array... -
Java 实例 - 测试两个字符串某段区域是否相等
2019-09-12 13:38:44Java实例大全 @Test public void StringRegionMath(){ String str = "Hello Java"; String str2 = "I love java"; boolean s = str.regionMatches(6,str2,7,4); boole... -
PHP/Java Bridge 实例 | PHP 调用 Java 实例
2016-03-02 14:07:41package test;public class Hello... public static final String JAVABRIDGE_PORT = "8080";//这个8080端口是Java.inc里指定的 static final php.java.bridge.JavaBridgeRunner runner = php.java.bridge.JavaBri -
Java 实例 - 获取年份、月份、第几天等
2019-09-18 11:05:34Java实例大全 @Test public void test1(){ Calendar cal = Calendar.getInstance(); int day = cal.get(Calendar.DATE); int month = cal.get(Calendar.MONTH)+1; int yea... -
Java 实例 - int数组转化成List简便的方法(互转)
2019-09-16 17:16:32Java实例大全 jar包地址:https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.7 @Test public void test5(){ int[] array = {1, 2, 5, 5, 5, 5, 6, 6, 7, 2, 9, 2}; ... -
java实例化对象后面添加花括号的理解分析
2019-04-11 16:02:27java实例化对象后面添加花括号的理解分析 昨天在看MyBatis官方文档时看到这么一段代码 return new SQL() {{ SELECT("P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME"); FROM("PERSON P"); if ... -
Java 实例 – 时间戳转换成时间
2017-05-26 13:44:57java 中我们常用的时间戳来转时间用的两个包 import java.text.SimpleDateFormat; import java.util.Date;方法://long timeStamp = 1495777335060;//直接是时间戳 long timeStamp = System.currentTimeMillis(); ... -
java 实例化一个对象怎么判断它为不为空?
2015-07-27 16:16:29Book book=new Book(); System.out.println(book); 输出一个Book 的引用地址。 怎么不通过对象属性判断这个对象为不为空? -
java面试专题之java 实例化一个类时在堆和栈中保存了哪些数据
2018-08-29 23:15:01面试中遇到在下面这段代码中,java 实例化一个类时在堆和栈中保存了哪些数据。 public static void mian(String args[]){ A a=new A(); } 当时一脸懵逼,然后模糊说了一下内存模型,所以总结一下。 ... -
Java实例变量和类变量
2017-09-04 09:02:02Java程序的变量大体可分为成员变量和局部变量。其中局部变量可分为如下3类。 形参:在方法签名中定义的局部变量,由方法调用者负责为其赋值,随方法的结束而消亡。 方法内的局部变量:在方法内定义的局部变量,必须... -
Java实例化泛型
2018-10-10 15:40:13// 通过反射创建model的实例 newUsr = clazz.newInstance(); } catch (Exception e) { throw new RuntimeException(e); } return newUsr; } 那个数组下标是对应的传进来的第几个泛型。 -
Java 实例 - 根据分隔符拼接数组元素(去掉最后一个分隔符)
2019-09-18 09:48:42Java实例大全 jar包地址:https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.7 @Test public void test7(){ String[] arr = {"a","a","a","a","a"}; String joinArr =... -
朝花夕拾——看清java实例变量的初始化内幕
2015-02-01 22:45:31过一段时间可能就得去找实习,今天在宿舍翻开以前常放在枕头边的大砖头《Java编程思想》打算重温下之前学的知识点,看到有关java初始化的一些知识,综合之前看过的网页和书籍,记下自己对java实例变量初始化的理解,... -
java实例化顺序
2018-05-20 23:00:13所有静态变量的初始化都会被JAVA编译器放在一个特殊的方法中称之为类初始化方法 ,只能被JVM调用。 此时会判断是否存在直接超类,如果还未被初始化,直接初始化超类的静态变量包括块 (主动初始化) 所以子类的超类... -
网络编程Java实例源程序
2008-09-26 19:47:00网络编程Java实例源程序,是《Java2实用编程百例》的第7章,很适合《网络通信编程》课程基础学习。 http://download.csdn.net/source/652855 下载有益 -
Kafka java实例代码
2017-08-14 15:15:30Kafka java实例代码 消息生产者代码示例 package com.jxl.cloub.kafka; import java.util.Date; import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka....
-
java守护线程
-
pkcs_11v2.11-CH.pdf
-
rui-vue-poster.zip
-
ET199加密狗设置工具(内含实例数据资料).rar
-
canvas实战之酷炫背景动画(一)
-
全国省市区城镇村街道 非常全,非常详细的数据库文件
-
Allway Sync(稳定) .rar
-
投标方法论
-
单个多模短线谐振器中等离激元引起的透明性
-
LVRTE2015_f3Patchstd.zip
-
python 调用其他 .py 文件功能
-
紧凑的多层膜结构,用于角度不敏感的彩色滤光片
-
实现 MySQL 读写分离的利器 mysql-proxy
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
MySQL 函数、用户自定义函数
-
Day14.快译通
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
基于Qt的LibVLC开发教程
-
MySQL 存储过程(创建海量数据实验环境)
-
基于激子的高效且颜色稳定的白色有机发光二极管