javaSE
beOkWithAnything
这个作者很懒,什么都没留下…
展开
-
Comparator接口
public interface Comparator<T> { * @param o1 the first object to be compared. * @param o2 the second object to be compared. * @return a negative integer, zero, or a positive integer as the * first argument is less than, e.原创 2020-08-08 16:40:45 · 103 阅读 · 0 评论 -
不能直接用两个Integer对象比较大小
问题:Integer i = new Integer(100); Integer j = new Integer(100); System.out.println(i==j); 打印结果是:false创建了两个Integer型的对象,对象之间的“==”符是用来比较是否是一个对象的两个引用(即比较地址是否相同)基本类型和包装类型之间可以自由转换,但不能简单地用包装类型代替基本类型比较大小Integer i = Integer.valueOf(100); Integer j原创 2020-07-25 20:28:12 · 2010 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点 细节
/*** 删除链表的倒数第n个节点: * 倒数第n个节点和最后一个节点间隔 n-1 步。 * 所以:要找倒数第n个节点,fast指针是先走 n-1 步,不是 n 步 * 而要删除倒数第n个节点,其实是要找到倒数第 n+1 个节点: * slow要停在被删除的节点的前一个节点(slow.next = slow.next.next) */public ListNode removeNthFromEnd(ListNode head, int n) {原创 2020-07-17 09:52:23 · 110 阅读 · 0 评论 -
给定一个包含大写英文字母和数字的句子,找出这个句子所包含的最大的十六进制整数,返回这个整数的值
java 16进制字符串转10进制整数:int x = Integer.parseInt("1A", 16);java 整数List排序:Collections.sort(list);原创 2020-07-14 19:40:22 · 595 阅读 · 0 评论 -
ArrayList
ArrayList继承体系Serializable接口序列化多个对象到文件比较麻烦:将要序列化的学生对象添加到集合,序列化一次集合即可public class Test { public static void main() { Student s1 = new Student(); Student s2 = new Student(); Student s3 = new Student(); Student s4 = new原创 2020-07-09 21:34:07 · 92 阅读 · 0 评论 -
ThreadLocal 在jdbc事务的应用
ThreadLocal优势:传递数据:在需要的地方获取数据,避免参数传递带来的代码耦合问题线程隔离:在各线程的数据相互隔离又能并发,避免了同步方式带来的性能损失基本使用public class Test { ThreadLocal<String> t1 = new ThreadLocal<>(); public String getContent() { return t1.get(); } public void set原创 2020-07-09 11:47:12 · 287 阅读 · 0 评论 -
并发包ConcurrentHashMap CountDownLatch CyclicBarrier Semaphore Exchanger
并发包ConcurrentHashMapHashMap是线程不安全的,性能好Hashtable是线程安全的Map集合,性能较差,已淘汰,整个数组全锁ConcurrentHashMap线程安全,性能好,只锁自己操作的元素位置public static Map<String, String> maps = new ConcurrentHashMap<>();public static void main() { Runnable target = new MyRun原创 2020-07-08 20:07:29 · 193 阅读 · 0 评论 -
线程通信 线程状态 线程池 死锁 Volatile关键字
文章目录线程通信(代码几乎不用)线程状态线程池死锁Volatile关键字(不保证线程安全)线程通信(代码几乎不用)经典问题:生产者与消费者问题生产不能过剩,消费不能停止(消息队列)this.notifyAll()this.wait()线程状态public class Thread { public static enum State { NEW, RUNNABLE, // 可运行 BLOCKED, // 锁阻塞原创 2020-07-08 16:26:05 · 136 阅读 · 0 评论 -
Comparable
public class Employee implements Comparable<Employee> { private int age; @Override public int compareTo(Employee o) { // 优雅 优雅,舒服了!! return this.age - o.age; }}原创 2020-07-07 20:28:21 · 155 阅读 · 0 评论 -
ArrayList.add(int index, E element)
/** * ArrayList.add(int index, E element) */public void add(int index, E element) { rangeCheckForAdd(index); ensureCapacityInternal(size + 1); // 数组拷贝 System.arraycopy(elementData, index, elementData, index + 1, size - index); ele原创 2020-07-07 19:04:43 · 180 阅读 · 0 评论 -
short变量
short a = 2;a = a + 2;--- 出错:a+2的结果为int型,不能从int转为shortshort a = 2;a += 2;--- 不出错:+=是java中的一个运算符,在运算时会自动进行向左的类型转换对于精度小于int的数值运算,会被转换为int再进行运算...原创 2020-07-07 14:56:45 · 709 阅读 · 0 评论 -
下面哪种情况会导致持久区jvm堆内存溢出
下面哪种情况会导致持久区jvm堆内存溢出?正确答案: C 循环上万次的字符串处理在一段代码内申请上百M甚至上G的内存使用CGLib技术直接操作字节码运行,生成大量的动态类不断创建对象JVM堆内存分为2块:PermanentSpace 和 Heap Space。Permanent 即持久代(Permanent Generation),主要存放的是Ja...原创 2020-03-08 16:10:34 · 4687 阅读 · 0 评论 -
new初始化过程:
class X{ Y y=new Y(); public X(){ System.out.print("X"); }}class Y{ public Y(){ System.out.print("Y"); }}public class Z extends X{ Y y=new Y(); public ...原创 2020-03-08 16:03:14 · 239 阅读 · 0 评论 -
java List每隔x个元素添加一个新元素
public static void main(String[] args) { List<String> list = new ArrayList<String>(); String s1 = "hello"; String s2 = "world"; String s3 = "java"; ...原创 2019-11-09 20:23:23 · 1384 阅读 · 0 评论 -
环境变量
https://www.cnblogs.com/huangbingzhi/p/4277160.html 首先是环境变量。引用百度百科的定义:环境变量,是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序...转载 2019-04-18 15:34:06 · 133 阅读 · 0 评论 -
父类方法中的this关键字代表的是子类对象
覆盖不会删除父类中的方法,而是对子类的实例隐藏,暂时不使用,而super可以调用这些隐藏的方法Java核心卷;有些人认为 super 与 this 引用是类似的概念, 实际上,这样比较并不太恰当。这是因为 super 不是一个对象的引用, 不能将 super 赋给另一个对象变量, 它只是一个指示编译器调用超类方法的特殊关键字我为什么会觉得父类中的this应该是父类本身对象的this(这是错...原创 2019-06-26 09:13:34 · 2064 阅读 · 3 评论 -
多线程环境下的单例模式
package com.yunding.concurrent;/** * 多线程环境下的单例模式: doubleChecked + volatile (双重检测 + 避免happenBefore) * * 实例化对象的三个步骤: 1. 开辟空间 2. 初始化对象 3. 把对象的地址赋给引用变量 * * @author beOkWithAnything * */public...原创 2019-06-30 09:52:48 · 212 阅读 · 0 评论 -
生产者/消费者实现方式一: 管程法
package com.yunding.concurrent;/** * 生产者/消费者实现方式一: 管程法 * * @author beOkWithAnything * */public class Test { public static void main(String[] args) { Container container = new Container()...原创 2019-06-30 09:54:24 · 313 阅读 · 0 评论 -
任务调度: Timer + TimerTask
package com.yunding.concurrent;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Timer;import java.util.TimerTask;/** * 任务调度: Timer + TimerTask * 高级用法: Spring + q...原创 2019-06-30 09:56:47 · 128 阅读 · 0 评论 -
可重入锁的原理
package com.yunding.concurrent;/** * 可重入锁的原理: 如果某个线程视图获取一个已经由它自己持有的锁时,那么这个请求会立刻成功,并且会将这个锁的计数值加 1, * 而当线程退出同步代码块(synchronized(){})时,计数器将会递减,当计数器的等于0时,锁释放 * 如果没有可重入锁的支持,在第二次企图获取锁时会进入死锁状态 * java.u...原创 2019-06-30 11:44:38 · 356 阅读 · 0 评论 -
Java内存区域
程序计数器(线程私有)一块较小的内存区域,可以看做是当前线程所执行的字节码的行号指示器字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,为了线程切换后能恢复到正确的执行位置,没条线程都需要有一个独立的程序计数器...原创 2019-04-04 18:20:09 · 71 阅读 · 0 评论 -
java发展史
Java技术体系从传统意义上来看,Sun官方所定义的Java技术体系包括以下几个组成部分:Java程序设计语言 各种硬件平台上的Java虚拟机 Class文件格式 Java API类库 来自商业机构和开源社区的第三方Java类库JDK:支持Java程序开发的最小环境(Java程序设计语言、Java虚拟机、Java API类库)JRE:支持Java程序运行的标准环境(J...原创 2019-04-04 17:13:34 · 106 阅读 · 0 评论 -
java 删除 list 中的元素
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区。下面就来讲一讲。。伸手党可直接跳至文末。看总结。。 JAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。1、for循环遍历listfor(int i...原创 2019-12-19 00:04:45 · 67 阅读 · 0 评论 -
java 数组定义
// 定义 + 初始化 int[] a = {1,2,3}; int[] b = new int[]{1,2,3}; int[] c = new int[2]{1,2}; //F // 定义 int[] a1; int a2[]; int[] a5 = new in...原创 2018-11-26 22:36:56 · 123 阅读 · 0 评论 -
java catch块顺序问题
public class ExceptionTryCatchTest { public void doSomething() throws IOException{ System.out.println("do somthing"); } public static void main(String[] args){ ...转载 2018-11-29 19:33:47 · 603 阅读 · 0 评论 -
BufferedReader与Scanner的区别
System.in提供的read方法是通过字节来读取数据的,所以对我们来说太麻烦啦!在Java SE6中我们可知道一个非常方便的输入数据的类Scanner,位于java.util包中,这个Scanner的具体用法为Scanner in = new Scanner(System.in);通过new创建一个Scanner对象,Scanner需要传入一个System.in作为参数,这个我们可以...转载 2018-11-29 19:16:54 · 2977 阅读 · 0 评论 -
String类+equals()方法+“ == ”面试问题
Demo1:1) 2) str3和str4 存储的都是同一常量 " def " 的地址str1和str2 存储的是数组对象的地址,很明显是两个不同的对象(值相同罢了) 两个true的原因: 对于基本数据类型, .equals( )方法比较的是值; 对于对象(String也是对象)来说,...原创 2018-08-28 20:17:13 · 651 阅读 · 0 评论 -
nextLine()和next()的区别
nextLine()和next()的区别:next方法像nextInt()、nextDouble()一样不能得到带空格的字符串(前后都没有):对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,即next不会读取有效字符之前的空格、回车等字符,但是输入有效字符后,next()方法会将其后输入的空格键、Tab键或Enter键等视为结束符。并会把E...原创 2018-08-28 16:19:47 · 1994 阅读 · 0 评论 -
java中的&和&&的区别
在java中,很多人都不知道&与&&,|与||的区别。&,&&:(与,短路与):一样的地方就是二者执行最后的结果是一样的,但是执行的过程有区别,对于&:无论&左边是否为false,他都会继续检验右边的boolean值。对于&&:只要检测到左边Boolean值为false时,就会直接判断结果,不会在检验右边的...转载 2018-11-27 20:56:47 · 80 阅读 · 0 评论 -
java多线程之并发Lock
Lock出现原因synchronized的缺陷: 如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,如果这个获取锁的线程由于要等待IO或者其他原因被阻塞了,但是又没有释放锁,其他线程便只能干巴巴地等待:如果多个线程都只是进行读操作,当一个线程在进行读操作时,其他线程只能等待无法进行读操作。当有多个线程读...原创 2019-12-19 00:06:39 · 125 阅读 · 0 评论 -
java多线程之并发synchronized
目录并发并发带来的问题同步(synchronized)synchronized方法实现代码:synchronized代码块实现代码并发原文地址: http://www.cnblogs.com/dolphin0520/p/3910667.html进程出现之前,每次都是一个程序在计算机里面运行,也就说内存中始终只有一个程序的运行数据。而如果想要任务A执行I/O操作的时候...原创 2019-12-19 00:06:49 · 116 阅读 · 0 评论 -
java接口中方法的默认访问修饰符为public
www.shengrizhufuyu.cn如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( )A、void use() { …}B、protected void use() { …}C、public void use() { …}D、以上语句都可以用在类SmallCup中正确答案: C ...原创 2018-12-19 16:46:44 · 21291 阅读 · 2 评论 -
java Text 错误: 找不到或无法加载主类 Text
找不到主类是因为classpath配置错误。是环境变量的问题,看看你的path和classpath是否是正确的,最可能的错误是classpath中少了前面少了.;classpath的配置必须遵循以下规则:.;%JAVA_HOME%\lib我佛了,为什么非要加 .; 呀? :如果你想要 java 命令 在当前目录下找 Text.class,就加上“.”如 " ....原创 2018-12-01 21:42:26 · 4498 阅读 · 0 评论 -
java 反汇编操作
javap命令参数C:\>javap -help用法: javap <options> <classes>其中, 可能的选项包括: -help --help -? 输出此用法消息 -version 版本信息 -v -verbose 输出附加信息 -l ...原创 2018-12-01 20:32:39 · 2156 阅读 · 0 评论 -
java包装类自动装箱拆箱特性
http://www.cnblogs.com/dolphin0520/p/3780005.html在Java SE5 之前,如果要生成一个数值为10的Integer对象,必须这样进行:Integer i = new Integer(10);而在 从Java SE5开始 就提供了 自动装箱 的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:Intege...原创 2018-12-01 20:17:56 · 200 阅读 · 0 评论 -
java String于常量池中的介绍
常量池 :在编译期被确定,并被保存在已编译的.class文件中的一些数据:它包括了关于类、方法、接口等中的常量,也包括字符串常量**********************************************************************用new String()创建的字符串不是常量,不能在编译期就确定所以new String()创建的字符串不放入...原创 2018-11-30 19:47:46 · 149 阅读 · 0 评论 -
java只有值传递
https://www.cnblogs.com/perfy/archive/2012/10/16/2726039.html对象传递的是引用,String传递的是值面试题:public static void main(String sgf[]) { StringBuffer a=new StringBuffer("A"); StringBuffer b=n...原创 2018-11-27 21:59:46 · 79 阅读 · 0 评论 -
Java的位运算符
1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段public class data { public static void main(String [] args){ int a = 129; int b = 128; System.out.print...转载 2018-11-27 21:04:55 · 122 阅读 · 0 评论 -
修饰符:final、static、abstract
A.java文件中只能有一个public class A{}的类,其他的类不能用publicfinal 修饰变量:标记为常量,不能被重新赋值final 修饰方法:禁止该方法在子类中重写final 修饰类:表明这个类不能被继承(String、Math),final类中的所有成员方法都会被隐式地指定为final方法static修饰的变量:该变量有且只有一个,被所有的对象...原创 2018-08-20 19:48:13 · 212 阅读 · 0 评论