java基础
文章平均质量分 96
javaSE部分,讲述java语法用法部分
mocas_wang
摸鱼专家
展开
-
Java中Lambda表达式的使用
1 简介Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。 Java SE 8添加了2个对集合数据进行批量操作的包:java.util.function包以及java.util.stream包。 流(stream)就如同迭代器(iterator),但附加了许多额外的功能。 总的来...原创 2021-07-16 16:49:04 · 3164 阅读 · 0 评论 -
Java中的装箱和拆箱深入理解
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。一.什么是装箱?什么是拆箱?在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:Integer i = new Int原创 2020-12-12 16:08:59 · 177 阅读 · 1 评论 -
Java类的初始化、变量的初始化
基础知识Java常量, final 修饰,值被设定后不能再被修改 静态变量里, static 修饰,顾名思义,无须创建对象,便可在内存中申请一个存储空间进行存储 成员变量, 也称实例变量,它随着当前对象的建立而建立,随着对象的销毁而销毁,存在于对象所在的堆内存中 构造器,创建class对象时执行 静态初始化块 ,执行优先级高于非静态的初始化块,它会在对象装载到 jvm的时候执行一次,执行完成便销毁,只能初始化 static 修饰的变量 非静态初始化块,执行的时候如果有静态初始化块,先...转载 2020-11-22 16:48:12 · 1741 阅读 · 0 评论 -
HashMap实现原理及源码分析
目录1 什么是哈希表2 HashMap概念和底层结构3 HashMap实现原理3.1 源码分析3.2 为何HashMap的数组长度一定是2的次幂?3.3 重写equals方法需同时重写hashCode方法4 源码分析1.位桶数组2.数组元素Node3.红黑树HashMap加载因子HashMap的构造函数如何获取: get(object key) 方法如何存储:put(k,v) 方法HasMap的扩容机制resize()5 问题解决5.1 J原创 2020-11-15 10:38:38 · 1270 阅读 · 0 评论 -
Java深入理解深拷贝和浅拷贝区别
目录1 什么是深拷贝和浅拷贝2 拷贝的内存变化2.1 基本类型和引用类型在赋值时内存的变化2.2 基本类型和引用类型作为函数参数的区别2.3 深拷贝和浅拷贝3 深浅拷贝实例3.1 浅拷贝3.2 深拷贝:3.3 Arrays.copyOf()1 什么是深拷贝和浅拷贝浅拷贝和深拷贝都是对一个已有对象的操作,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函。在java中,一般使用=好做赋值操作的时候,对于基本数据类型原创 2020-11-08 10:22:42 · 4490 阅读 · 0 评论 -
底层对string,stringbuffer和stringbuilder的理解
目录1 简单介绍2 底层原理2.1 String原理2.2 字符串相加3 对比总结1 简单介绍java中用于处理字符串常用的有三个类:1、java.lang.String2、java.lang.StringBuffer3、java.lang.StrungBuilder三者共同之处:都是final类,不允许被继承,主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着,且考虑到防止其中的参数被参数修改影响到其他的应用。StringBuffer是线程安全,可以原创 2020-10-21 20:34:00 · 585 阅读 · 0 评论 -
java中的final如何使用和理解
目录一.final关键字的基本用法1.修饰类2.修饰方法3.修饰变量4. final方法参数二.深入分析final关键字三.总结final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。Final用于修饰类、成员变量和成员方法。final修饰的类,不能被继承(String、StringBuilder、StringBuffer、原创 2020-09-27 20:29:49 · 1252 阅读 · 0 评论 -
Java内存分配(多实例演示)
目录1 概述2 内存区域分配1、Java内存区域2、内存分配3、方法区中的常量池3 内存分配机制4 内存调用示意图5 运行实例实例1实例2实例 3实例 41 概述Java 程序运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。一、栈:储存局部变量局部变量:在方法的定义中或者在方法声明上的变量称为局部变量。 特点:栈内存的数据用完就释放。二、堆:储存 new...原创 2020-09-07 20:51:52 · 2766 阅读 · 1 评论 -
java文件操作
1.java文件java.io包中的File类,用于处理文件。使用File类,创建该类的对象,并指定文件名或目录名:示例import java.io.File; // 导入File类File myObj = new File("filename.txt"); // 指定文件名1 2 3File类有许多方法,如下表:方法 返回值类型 描述 canRead() Boolean 测试文件是否可读 canWrite() Boolean原创 2020-08-29 17:55:01 · 773 阅读 · 0 评论 -
深度解析List集合(2)
3 LinkedList3.1概述1,LinkedList底层通过链表来实现,随着元素的增加不断向链表的后端增加节点。2,LinkedList是一个双向链表,每一个节点都拥有指向前后节点的引用。相比于ArrayList来说,LinkedList的随机访问效率更低。它继承AbstractSequentialList,实现了List,Deque,Cloneable,Serializable接口。1,LinkedList实现List,得到了List集合框架基础功能;2,LinkedL...原创 2020-07-25 13:38:50 · 395 阅读 · 0 评论 -
java序列化与反序列化全讲解
1 概述序列化与反序列化Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例。为什么需要序列化与反序列化我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图..原创 2020-07-27 21:30:05 · 19926 阅读 · 3 评论 -
java中泛型讲解
目录1 概述作用简单使用特性2 泛型使用使用泛型实现的优势泛型类泛型接口泛型通配符泛型方法泛型方法的基本用法类中的泛型方法泛型方法与可变参数静态方法与泛型泛型方法总结泛型上下边界3 泛型接口定义及使用泛型数组1 概述泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(.原创 2020-07-26 16:33:26 · 216 阅读 · 0 评论 -
map基本应用
目录1 map概述2 常见方法3 hashMap4 TreeMap5 HashTable1 map概述Map是一种依照键(key)存储元素的容器,键(key)很像下标,在List中下标是整数。在Map中键(key)可以使任意类型的对象。Map中不能有重复的键(Key),每个键(key)都有一个对应的值(value)。一个键(key)和它对应的值构成map集合中的一个元素。Map中的元素是两个对象,一个对象作为键,一个对象作为值。键不可以重复,但是值可以重复。概述:原创 2020-07-26 11:02:10 · 850 阅读 · 1 评论 -
java set集合讲解
1 set集合1.1 概述在Java中使用Set,可以方便地将需要的类型以集合类型保存在一个变量中.主要应用在显示列表.Set是一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素用于存储无序(存入和取出的顺序不一定相同)元素,值不能原创 2020-07-25 14:51:46 · 680 阅读 · 0 评论 -
深度解析List集合(1)
目录1 List集合1.1 List概述1.2 List框架1.3 常用方法2 ArrayList集合2.1 ArrayList概述2.2 内部原理解析ArrayList的底层数据结构构造方法Add方法get方法set方法remove方法细节再说明2.3 ArrayList 基本操作1 List集合1.1 List概述在Collection中,List集合是有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍..原创 2020-07-25 11:43:29 · 556 阅读 · 0 评论 -
Collection集合理解使用
1 Collection集合1.1 集合概述 集合:集合是java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。 1. Java是⼀⻔⾯向对象的语⾔,就免不了处理对象 2. 为了⽅便操作多个对象,那么我们就得把这多个对象存储起来 3. 想原创 2020-07-25 10:25:20 · 903 阅读 · 0 评论 -
java反射应用及内存过程解析
反射概述Class 本身也是一个类,Class 对象只能由系统建立对象。一个加载的类在 JVM 中只会有一个Class实例,一个Class对象对应的是一个加载到JVM中的一个.class文件。每个类的实例都会记得自己是由哪个 Class 实例所生成,通过Class可以完整地得到一个类中的所有被加载的结构。Class类是Reflflection的根源,针对任何你想动态加载、运行的类,唯有先获得相应的Class对象反射是:指程序可以访问、检测和修改它本身状态或行为的一种能力反射是一种能力,所以给原创 2020-07-18 17:26:00 · 739 阅读 · 0 评论 -
JAVA内置和JUnit4注解示例
目录常见的系统注解:@Override@Deprecated@SuppressWarnings2 JUnit4注解@Test@After@AfterClass@Before@BeforeClass@Ignore常见的系统注解:JavaSE中内置三个标准注解,定义在java.lang中:@Override 限定重写父类方法,若想要重写父类的一个方法时,需要使用该注解告知编译器我们正在重写一个方法。如此一 来,当父类的方法被删除或修改了,编译器会提示原创 2020-07-18 16:52:18 · 390 阅读 · 0 评论 -
java注解详解
1 Annotation(注解) 概述(1)、注解起到标识做用,比如Junit的@Test注解。Junit会在运行时检查方法上是否存在此注解,如果存在,就通过反射来运行你的方法。注意标红的反射两个字,反射在注解里相当重要,写完你的自定义注解类后没啥用,必须要用反射才能让它动起来!所以需要对反射有了解,感兴趣的小可爱可以看下这篇:用最直接的大白话来聊一聊Java中的反射机制(2)、从 JDK 5.0 开始,Java 增加了对Annotation(注解)的支持。(3)、注解其实就是代码里...原创 2020-07-18 15:51:42 · 346 阅读 · 0 评论 -
java异常处理throw new RuntimeException(e)
1.java try catch 异常后还会继续执行吗?catch 中如果你没有再抛出异常 , 那么catch之后的代码是可以继续执行的 , 但是try中 , 报错的那一行代码之后 一直到try结束为止的这一段代码 , 是不会再执行的。//代码1public static void test() throws Exception { throw new Exception("参数越界"); System.out.println("异常后"); //编译错误,「无法访问的语句原创 2020-05-12 18:22:45 · 31738 阅读 · 3 评论 -
java中异常处理throw与throws
1.java处理异常方式在java代码中如果发生异常的话,jvm会抛出异常对象,导致程序代码中断,这个时候jvm在做的操作就是:创建异常对象,然后抛出,比如:int i= 1;int j = 0;int res = 0;res = i/j;//除0错误System.out.println(res);这5句代码运行到第四句会中断,因为jvm抛出了异常2.throw的作用手动抛出异常但是有时候有些错误在jvm看来不是错误,比如说int age = 0;age = -100;转载 2020-05-12 17:57:18 · 870 阅读 · 0 评论 -
linux安装java.jdk环境
1、下载jdk安装包到本地从官网下载,下载过程还要注册oracle账号。下载tar.gz版本。我下载的是这个8u231的版本,点第一个download2.解压成文件夹将下载好的压缩包解压之后的文件夹放在某一路径,我放在的是/usr/local,记住这个路径sudo mv jdk1.8.0_231 /usr/local3.编辑/etc/profile文件利用vim,...原创 2020-01-12 16:57:40 · 621 阅读 · 0 评论