java知识点(持续更新)

本文深入探讨了Java中的重要概念和技术,包括对象比较、设计模式、时间读取、字符串拼接等,并介绍了单元测试、变量作用域及守护线程的知识。

知识

1.“==”比较的是地址值是否相等

        2行

“equals”重写之后比较的是内容,没重写时比较的还是地址值

2.享元模式

        4行

节省内存的使用,重复利用一些对象
例如:  Integer   -128----127
  		String 定义同一个内容就不会重复创建新对象

3.装饰者模式

        5行

装饰者必须对被装饰者有某种增强


组合优于继承

4.读取时间

long start=System.currentTimeMillis() get当前系统的毫秒值
System.nanoTime() get当前系统的纳秒值

5.原形(prototype)模式

克隆和反序列化不需要调用类的构造方法,根据一个已有的对象创建新的对象。

使用Cloneable接口和clone克隆的对象,仅仅是浅拷贝,如果属性是引用类型,复制的仅仅是地址。没有为这个属性创建新的对象。

深拷贝 利用序列化和反序列化生成新的对象,也会为属性创建新的对象。

6."+"拼接

在循环里,效率才低
本质上是StringBuilder

两个常量相加,拼接完(编译优化)才创建对象
两个变量相加,先创建对象再拼接
找不到本地地址 ./images/1533892390204.png 对应的资源

7.包装

 

找不到本地地址 ./images/1533892659980.png 对应的资源

 

enter description here

 

8.javap 反编译

 

找不到本地地址 ./images/1533892733752.png 对应的资源

 

enter description here

9、重用页面代码

<%@ include file="新页面"%>
针对eshop项目写新页面时,复制/jsp/include/template.jsp, 根据自己需要改动中间部分即可

10、单元测试工具 junit

java 单元测试工具

11、局部变量和成员变量的区别

1.局部变量:定义在方法中或方法声明上的变量(形参)
2.成员变量:定义在类中方法
3.局部变量存在栈内存
4.成员变量存在堆内存
5.局部变量属于方法
6.成员变量属于对象
7.局部变量随着方法的调用而产生,随着方法的调用完毕而消失
8.成员变量随着对象的创建而存在,随着对象的销毁而消失
9.成员变量有默认值
10.局部变量没有默认值,必须赋值才能使用

11、

只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。

守护线程最典型的应用就是 GC (垃圾回收器)

12.

volatile关键字用在多线程同步中,可保证读取的可见性,JVM只是保证从主内存加载到线程工作内存的值是最新的读取值,而非cache中。但多个线程对

volatile的写操作,无法保证线程安全。例如假如线程1,线程2 在进行read,load 操作中,发现主内存中count的值都是5,那么都会加载这个最新的值,在线程1堆count进行修改之后,会write到主内存中,主内存中的count变量就会变为6;线程2由于已经进行read,load操作,在进行运算之后,也会更新主内存count的变量值为6;导致两个线程及时用volatile关键字修改之后,还是会存在并发的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值