
JAVA基础
Penny婷
这个作者很懒,什么都没留下…
展开
-
Java反射及如何获得Class对象
获取Class类的三种方式方法一 //创建对象 Manager m = new Manager(); //获取Classd对象 Class m1 = m.getClass(); //得到类名(带包名) System.out.println(m1.getName());方法二 //通过类的名称得到Class对象 Class m2 = Class.forName("com.gen...原创 2019-03-18 20:07:13 · 294 阅读 · 0 评论 -
线程锁(Lock)、读写锁(ReadWriteLock)及条件阻塞Condition
一、线程锁(Lock)Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作。 它们允许更灵活的结构化,可能具有完全不同的属性,并且可以支持多个相关联的对象Condition 。示例代码:public class LockTest { public static void main(String[] args) { new LockTes...原创 2019-04-29 18:28:59 · 1552 阅读 · 0 评论 -
线程池Executors
一、线程池的概念Java里面线程池的顶级接口是 java.util.concurrent.Executor ,但是严格意义上讲 Executor 并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是 java.util.concurrent.ExecutorService 。要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,很有可能配置的线程池不是较优的,...原创 2019-04-29 14:10:59 · 195 阅读 · 0 评论 -
线程范围内共享数据ThreadLocal
一、ThreadLocal概念:ThreadLocal的实例代表了一个线程局部的变量,ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。它采用采用空间来换取时间的方式,解决多线程中相同变量的访问冲突问题。实现原理:由下方源码可知,ThreadLocal实际上是用当然的Thread对象为键使用map实现效果的。//源码:private T...原创 2019-04-29 12:00:58 · 289 阅读 · 0 评论 -
传统多线程相关技术
一、多线程的实现方式1、继承Thread类Thread t2 = new Thread(){ @Override public void run() { try { Thread.sleep(500); } catch (Interrupted...原创 2019-04-29 08:51:57 · 221 阅读 · 0 评论 -
自定义泛型
一、泛型的内部原理(以集合为例)泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会擦除掉“类型”信息,使程序运行效率不受影响。由于jvm是不知道类型信息的,所以只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据。参考代码:ArrayList<Integer> list1 = new ArrayList...原创 2019-04-28 19:30:45 · 380 阅读 · 0 评论 -
动态代理Proxy
一、动态代理的作用:对某一个对象的某一个功能进行增强。与装饰模式不同的是,装饰模式往往是增加一个新的功能,而代理模式是在已有功能的基础上加强。二、动态代理的要素:1、接口:是对接口中的方法进行代理2、被代理对象3、代理对象三、案例public class ProxyDemo { public static void main(String[] args) { //...原创 2019-04-28 19:15:50 · 399 阅读 · 0 评论 -
自定义注解及注解的解析
一、注解的概念1、注解是JDK1.5开始的概念2、注解相当于一种标记,是类的组成部分,可以给类携带一些额外的信息。但是去掉注解,该类依然是一个完整的类。3、注解是给编译器或JVM看的,编译器或JVM可以根据注解来完成对应的功能。二、自定义注解2.1、定义格式public @interface 注解名{}如:定义一个名为Student的注解public @interface Stu...原创 2019-04-27 21:01:24 · 1297 阅读 · 0 评论 -
反射的综合案例
一、案例说明编写一个工厂方法可以根据配置文件产任意类型的对象。例如有配置文件stu.properties,存储在项目的src文件夹下内容如下:class=com.itheima.reflect.Student name=rose gender=女 age=18根据配置文件信息创建一个学生对象。二、案例代码public class Demo{ public static void...原创 2019-04-27 18:58:54 · 335 阅读 · 0 评论 -
位运算符
注意:要做位运算,首先要把数据转换为二进制1、&,|,^, ~:class OperatorDemo { public static void main(String[] args) { int a = 3; int b = 4; System.out.println(3 & 4); //0 System.out.println(3 | 4...原创 2019-04-27 14:32:29 · 215 阅读 · 0 评论 -
原码、反码和补码
有符号数据的表示法:原码、反码和补码学习目的:因为计算机在操作的时候,都是采用数据对应的二进制的补码来计算的示例:用原码,反码和补码分别表示+7和-7...原创 2019-04-27 14:00:08 · 520 阅读 · 0 评论 -
二、八、十、十六进制之间的转换
一、二进制到任意进制之间的转换二、任意进制到十进制之间的转换快速计算:系数*基数的权次幂,其中权从0开始计数如: 八进制的255 = 2 * 82 + 5 * 81 + 5 * 80 = 173十六进制的AD = 10 * 161 + 13 * 16 0 = 173三、十进制到任意进制之间的转换1、十进制->二进制2、十进制到十六进制(同理):如果熟练,可...原创 2019-04-27 13:53:14 · 2057 阅读 · 0 评论 -
Java反射获取类的构造方法、属性和成员方法及使用
public class ReflectTest { public static void main(String[] args) {//com.generic.Manager //获取输入的类的名称 String name; if(args.length>0) name = args[0]; else{ Scanner in = new Scanner(Syste...原创 2019-03-18 20:28:16 · 1361 阅读 · 1 评论 -
多线程同步工具CountdownLatch,CyclicBarrier,Exchanger,Semaphore
一、CountdownLatch允许一个或多个线程等待直到在其他线程中执行的一组操作完成。示例代码:public class CountdownLatchTest { public static void main(String[] args) { ExecutorService service = Executors.newCachedThreadPool(); final...原创 2019-04-29 18:43:15 · 219 阅读 · 0 评论