
-----【Java语言】
青苔小榭
可怕的不是比你强的人,而是比你强的人比你更努力。
展开
-
J2SE初识
什么是J2SE?J2SE和Java有什么关系?什么是Java2?这三者有什么联系?为什么要有Java2 ? J2SE ?我用一张图来解释其实Java2是Java的第二代J2SE 是Java2的标准版,主要用于桌面应用软件的编程J2EE 是Java2的企业版,主要用户分布式的网络程序开发,比如电子商务网站J2ME 是Java2的微缩版,主要原创 2016-12-18 16:34:56 · 770 阅读 · 15 评论 -
J2SE - 方法重载
方法重载是指一个类中定义相同名字,传入参数不同(类型不一样或个数不一样)的多个方法,当调用时会根据不同的参数选择对应的方法。为什么要用重载呢?因为有的时候你并不知道会传什么样的参数,如果定义了好多不同名字的方法会显得很混乱。比如这段代码:public class Test{ void max( int a , int b) { System.out.pr原创 2016-12-18 20:06:05 · 571 阅读 · 18 评论 -
J2SE - 内存解析
先声明几个内存分析的小规则:1.局部变量,基础类型的,只占一块内存2.形参等同于局部变量,在栈内存中分配空间,值为实参传的值3.方法执行完后,为此方法分配的所有局部变量的内存空间消失,在堆内存中对应的内存不一定马上消失,垃圾收集器回收时就消失了下面我用例子来解释这几个规则这是主函数:public static void main(string args[])原创 2016-12-18 16:59:38 · 974 阅读 · 15 评论 -
J2SE - Static关键字
1.在类中,用Static 声明的成员变量为静态成员变量,它为该类的公共变量,在第一次使用时被初始化,对于该类的所有对象来说,Static成员变量只有一份。2.用Static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在Static方法中不可访问非Static的成员。静态方法不再是针对某个对象调用,所以不能访问非静态成员。3.如何调用静态变量?类名.静态变量(不原创 2016-12-21 11:15:45 · 743 阅读 · 20 评论 -
J2SE之Join方法
看这个例子:方法在t1.start();时产生一个分支,执行public void run()但是t1.join();是把产生的分支合并回来当一个线程执行完了,才开始,相当于方法调用所以程序先把子线程运行完,再运行主线程public class TestJoin{ public static void main(String[] args) {原创 2017-01-03 07:46:59 · 697 阅读 · 16 评论 -
【Java-插入排序】
插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动...原创 2022-07-13 21:08:04 · 547 阅读 · 1 评论 -
HashMap如何确定数组位置
HashMap 底层数据结构为数组+链表+红黑树,当map去put的时候,元素先定位到数组的位置,如果有多个元素定位到了数组的同一个位置,就会生成链表,当链表长度大于8并且数组长度大于64时,会转换为红黑树。先看put方法数组位置定位:第一步:hash运算第二步:用第一步的值与数组容量取余因为hashmap的容量大小是2的幂次方,所以可以通过&运算来优化%运算。例如:(16 % 5 )等价于 (16 & (5 - 1))4.位置计算hash = (h = key.hashCode()) ^ (h原创 2022-07-02 17:37:49 · 2242 阅读 · 1 评论 -
【JAVA】值传递与引用传递
Java中没有引用传递值传递:就是在方法调用的时候,实参是将自己的一份拷贝赋给形参,在方法内,对该参数值的修改不影响原来的实参。引用传递:是在方法调用的时候,实参将自己的地址传递给形参,此时方法内对该参数值的改变,就是对该实参的实际操作。结果:调用前baseValue的值:30调用后baseValue的值:30可以看到,baseValue的值并没有发生变化。结果分析:1)value被初始化为baseValue值的一个拷贝(30)2)value被乘以2后等于60,但baseValue的值仍为303)这原创 2022-06-27 17:23:30 · 574 阅读 · 0 评论 -
【操作系统】用户态和内核态
文章目录1.百度百科:2.个人理解:3. CPU保护模式1.百度百科:用户态(user mode)在计算机结构指两项类似的概念。在CPU的设计中,用户态指非特权状态。在此状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。在操作系统的设计中,用户态也类似,指非特权的执行状态。内核禁止此状态下的代码进行潜在危险的操作,比如写入系统配置文件、杀掉其他用户的进程、重启系统等。内核模式操作的一种高特权模式,其中的程序代码能直接访问所有内存(包括所有的原创 2022-03-07 06:42:28 · 755 阅读 · 1 评论 -
JDK1.7-为什么hashmap会出现死循环?
文章目录问题:为什么在JDK1.7中hashmap会出现死循环?(CPU100%)1.头插法2.扩容3.总结问题:为什么在JDK1.7中hashmap会出现死循环?(CPU100%)1.头插法JDK1.7中采用的是头插法,即从头部插入。比如:在x01位置已存在A,经过hash运算后B也需要插入到x01位置。那么插入之后的结果是这样的:当有新插入的值,最先插入的数据会进入到链表部分。2.扩容死循环发生在并发扩容阶段这是hashmap初始状态:在并发的时候,有两个线程同时对hashm原创 2021-12-21 06:56:16 · 1440 阅读 · 0 评论 -
java集合之Set
文章目录java的集合体系HashSet、LinkedHashSet、TreeSet示例1:示例2:小总:java的集合体系今天咱们就来唠唠HashSet、LinkedHashSet、TreeSet示例1:@Test public void test(){ List<Integer> list = new ArrayList(); list.add(4); list.add(2); list.add(4);原创 2020-08-11 19:10:11 · 220 阅读 · 0 评论 -
java截取扩展名:文件名. 后的字符串
利用String的lastIndexOf方法 @Test public void lastIndexof(){ String str = "文件管理.pdf"; System.out.println(str.substring(str.lastIndexOf(".")+1)); }其他实例:formIndex为指定索引,代码会从fo...原创 2019-06-14 11:00:24 · 8110 阅读 · 0 评论 -
【java基础】Map数据的存进和取出的顺序相同
Map数据的存进和取出的顺序相同,需要用到linkedHashMap结构,如下所示:import java.util.HashMap;import java.util.LinkedHashMap;import java.util.Map;import java.util.TreeMap;/* * @auther 张静怡 * @DESCRIPTION * @create 2018...原创 2018-12-11 21:35:12 · 2284 阅读 · 1 评论 -
【java8新特性】Optional类
Optional 类是一个可以为null的容器对象,可以让我们快速定位NullPointException。1.方法of()用于创建非空对象,该方法要求传入的参数不能为空,否则抛NullPointException, 我们直接就可以知道这个对象是空的@Test public void test1() { Optional<Employee> opt...原创 2018-05-20 17:47:43 · 4485 阅读 · 12 评论 -
【Java8新特性】Stream
一、使用Stream的三个操作步骤:创建Stream-&gt;中间操作-&gt;终止操作 二、详情 ①.创建Stream 1.可以通过collection系列集合提供的stream或parallelStream List&lt;String&gt; list = new ArrayList&lt;&gt;(); Stream&lt;String&am原创 2018-05-13 15:25:32 · 511 阅读 · 0 评论 -
【Java8新特性】Java8 内置的四大核心函数式接口
函数式接口是指只有一个抽象函数的接口 使用lambda必须要用函数式接口,java8中提供了四大核心函数式接口,我们可以直接使用,就免去了自己写的麻烦1.Predicate:断言型接口@Test public void test4() { List<String> list = Arrays.asList("Hello","shang","lamb...原创 2018-05-05 20:22:01 · 846 阅读 · 0 评论 -
【Java8新特性】Lambda表达式
1.什么是Lambda表达式? “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。2.为什么要用Lambda表达式?个人理解:因为简洁,节省...原创 2018-04-22 11:31:04 · 405 阅读 · 0 评论