Java笔记
总结的Java笔记分享
一个长不胖的程序YUAN
来自贵州遵义,儿时留守形成一种独立思考、做事严谨、不怕吃苦的性格。喜欢与人交流分享知识,喜欢研究技术与阅读优秀作品。学习,这条路总是孤独并充满喜悦的。社会中有很多机遇,是否成功在于你如何把握。当然在机遇中也会遇到朋友,你必须学会信任,吸收每一份掌声,坚信每一点实力,展现自己的未来。愿你我越来越幸福...
展开
-
你真的知道HashMap与Hashtable的区别与关系吗?【底层讲解】
一、简介及相同点1、产生时期Hashtable是Java最早版本(JDK1.0)就发布的一种提供键值映射(Key-Value)的数据类型,而HashMap产生于JDK1.2。虽然Hashtable比HashMap出现的早一些,但是现在Hashtable基本上已经被弃用了。而HashMap已经成为应用最为广泛的一种数据类型了。造成这样的原因一方面是因为Hashtable是线程安全的,效率比较低。另外Hashtable没有遵循驼峰命名法,不是HashTable2、==简介=(区别中都有详细介绍)(1原创 2020-08-07 01:53:45 · 12981 阅读 · 3 评论 -
Java中集合遍历Iterator迭代器执行原理 迭代器模式 foreach 增强for循环
文章目录1、Iterator迭代器2、开发中推荐使用方式3、错误使用方式4、Iterator迭代器中remove()方法5、利用迭代器实现的增强for循环遍历或者说foreach遍历1、Iterator迭代器用来遍历Colletioon接口实现的集合,返回Iterator接口的实例。①Iterator迭代器:专门用来遍历List、Set接口实现的集合,它不是一个容器,是Colletion接口中的一个遍历集合的方法,相当于火车上的乘务员的检票过程;②迭代器模式:提供一种方法访问一个容器(contain原创 2020-08-07 00:01:44 · 4873 阅读 · 7 评论 -
String字符串中 intern()方法的理解(重难点)
1、intern()是字符串对象的一个方法,它底层是一个native直接是调用了本地方法2、调用这个方法之后就是去看当前字符串是否在常量池中存在(1)存 在:那就直接返回该字符串在字符串常量池中所对应的地址给栈中要引用这个字符串的变量。(2)不存在:① jdk 1.6:先在字符串常量池中创建该字符串,地址与堆中字符串地址不相同。然后再返回刚创建的字符串在字符串常量池中所对应的地址给栈中要引用这个字符串的变量。② jdk 1.7及以后:直接将堆中(不是字符串常量池中)该字符串的地址复制到字符串常量.原创 2020-07-18 16:00:10 · 4881 阅读 · 1 评论 -
一道十分经典的intern面试题(String字符串)让你彻底搞懂intern方法
首先我觉得要看懂这道题还得知道inren()方法的一些知识,还要知道new String(“ab”)到底创建了几个对象。一、intern()方法的理解(重难点)1、intern()是字符串对象的一个方法,它底层是一个native直接是调用了本地方法2、调用这个方法之后就是去看当前字符串是否在常量池中存在(1)存 在:那就直接返回该字符串在字符串常量池中所对应的地址给栈中要引用这个字符串的变量。(2)不存在:① jdk 1.6:先在字符串常量池中创建该字符串,地址与堆中字符串地址不相同。然后再返.原创 2020-07-18 15:57:09 · 15524 阅读 · 7 评论 -
面试篇--String字符串整理(底层角度分享)【完整版】
文章目录一、String的基本特性二、String 的内存分配三、String 的基本操作四、String 字符串拼接操作五、intern()方法的理解一、String的基本特性1、String:字符串,最常见的两种创建方式① String str1 = “qingdianguanzhu” ; //字面量定义的方式,数据存储于字符串常量池中② String str2 = new String (“hello”) ;2、String 底层声明为 final 的,也就意味着不可以被继承,还不可变3原创 2020-07-18 01:36:03 · 16013 阅读 · 5 评论 -
Demo示例:最简单的生产者和消费者问题
Demo示例:最简单的生产者和消费者问题package TreadTest;/*生产者不断的生产产品给店员,消费者在店员这里消费产品,要求是当店员处有最多只能存放20个产品, */class Clerk {//中间者(店员) private int productCount = 0; //生产者生产产品方法 public synchronized void productProduct() { if (productCount < 20) {//店员原创 2020-06-28 22:03:54 · 3789 阅读 · 0 评论 -
JavaIO流之转换流(InputStreamReader、OutputStreamWriter)详细介绍,附代码
文章目录一、处理流之二:转换流的使用1、转换流:属于字符流2、转换流作用:3、编码和解码:4、字符集5、utf-8编码文件转换为gbk编码文件演示一、处理流之二:转换流的使用1、转换流:属于字符流InputStreamRead:将一个字节流的输入流转换为字符流的输入流OutputStreamWriter:将一个字符流的输出流转换为字节流的输出流2、转换流作用:提供字节流与字符流之间的转换,比如说:①要将一个utf-8的.txt的文件转换为gbk的.txt文件;②要一个.txt文件以字节流的形式读原创 2020-06-19 17:14:14 · 4052 阅读 · 0 评论 -
字符集及八种编码对汉字和字母所占字节数
字符集1)、ASII:美国标准信息交换码,用一个字节的7位可以表示;2)、ISO8859-1:拉丁码表,欧洲码表,用一个字节的8位可以表示;3)、GBK2312:中国的中文编码表,最多两个字节编码所有字符;4)、GBK:中国的中文编码表升级,融合了更多的中文文字字符,最多两个字节编码;5)、Unicode:国际标准码,融合了目前人类使用的所有字符,为每个字符分配唯一的字符码,所有的文字都用两个字节来表示;6)、utf-8:变长的编码方式,可用1-4个字节来表示一个字符。现在最多的又有6个字节;原创 2020-06-19 17:07:56 · 15189 阅读 · 0 评论 -
IDEA中文档中文乱码 从eclipse转入中文注释乱码 截图解决
IDEA中 中文乱码有很多种情况会导致:本文解决有提示的,一般情况下都是字符集不符合所致,就是IDEA的设置的默认编码和文档的编码不一致此时解决的思路就是将两者的编码设置为一致即可:解决:前提是你的编码IDEA编码是utf-81、第一步就是打开文档,当然出现乱码一定是打开文档了,会出现这个界面说明:我以一个.txt编码不对演示,你也可能是eclipes导入IDEA的中文注释乱码,但是操作是一样的2、第二步会弹出编码,选择GBK编码3、选择Reload–>此时就把当前文档编码改为了GB原创 2020-06-19 16:19:59 · 4482 阅读 · 0 评论 -
JavaIO流实现图片(或者文件)简单 加密及 解密操作
IO流实现对图片的加密及解密1、首先我是要用IO流的读入和写出的操作来进行处理图片的,如果对IO流的像相关知识不够熟悉的朋友可以去看看这篇文章,里面详细地介绍了IO流的操作。地址:https://blog.csdn.net/qq_43012792/article/details/1068397212、实现图片加密代码:说明:我的原图片是放在了当前Module(day0618)下的,新建加密图片也是放在了此目录下新的加密图片的大小还是和原图片的大小一样,原因是利用 ^ 运算了,没有对字节增加或减少原创 2020-06-19 13:36:32 · 5653 阅读 · 0 评论 -
IO流之节点流的读入+写出 字符流(FileReader、Filewriter)演示
IO流之节点流的读入+写出,字符流演示1、FileReader(节点流,字符流)–>磁盘到内存(读入)关于我项目中的Module(day0618)下的Hello.txt文件内容的读入程序中,并打印在控制台的演示说明:1、read()理解:返回读入的一个字符,如果达到文件末尾,返回-1;2、异常的处理:为了保证资源一定可以执行关闭操作,需要使用try-catch-finally处理,其中要先判断一下流是否成功被开启,要是存在流,才进行关闭,避免空指针异常;3、读入的文件一定要存在,否则就会报F原创 2020-06-19 12:20:10 · 4233 阅读 · 0 评论 -
Java之IO流超级全的总结 File类 InputStream OutputStream Reader Writer
一、File类1、File类的理解1)File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹);2)File类声明在Java.io包下;3)File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法;4)后续File类的对象会作为参数传递到流的构造器中,指明读取或写入的“终点”;2、File类的实例化2.1常用构造器①File(String filePath) //filePath:文件的路径File file1 = new File("hello.txt"原创 2020-06-19 01:20:42 · 4238 阅读 · 0 评论 -
Java数组优缺点和集合概述,Collection、Map接口中常见方法的使用
一、集合框架的概述1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库…)。2.1数组存储多个数据方面的特点:①一旦初始化以后,其长度就确定了;②数组一旦定义好,其元素的类型就确定了,也就只能操作指定类型的数据了;比如:String[[],int[],object[]…2.2.数组在存储多个数据方面的缺点:①一旦初始化以后,其长度就不可以修改;②数组中提供的方法非常有限,对于增原创 2020-06-11 23:11:50 · 4479 阅读 · 0 评论 -
java中i++、i--、++i、--i 自增增减 计算方法总结+底层讲解
Java中i++、i–、++i、–i底层讲解 (减号加粗有点看不清,请谅解)一、浅见理解:1)i++ :i 后++ 就是先让将 i 的值赋值给前面变量,i 自身再加1;2)++i :i 先++ 就是先让 i 自身先加1,再把运算结果赋值给前面变量,此时打印的 i 就是加1之后的结果总结说明:①加号在后就先赋原来的值给前面变量(前面变量要是本身i的话,那么打印i的结果就是先赋值的结果);②加号在前就先做加法,加之后的结果再赋值;还没明白?看这1)i++ 就是先把没有加之前 i 的值保存在一个原创 2020-06-11 18:26:50 · 6909 阅读 · 0 评论 -
Java注解是什么,注解的三大重要用途示例,全面版
Java注解概述及三大重要用途示例一、注解概念:1)Annotation(注解)其实就是代码里的特殊标记,JDK1.5新增的功能。这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。2)在JavaSE中,注解的使用比较简单,例如标记过时的功能,忽略代码警告等,在JavaEE/Android中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。3)未来的开发模式都是基于注解原创 2020-06-10 14:40:37 · 4722 阅读 · 0 评论 -
Java枚举类(enum)5种常见用法和3种内部方法,详细附代码
Java枚举类(enum)重点用法和内部方法,附代码一、Java 枚举类(enum) 详解5种常见的用法1.常量 在JDK1.5 之前,我们定义常量都是: public static final... 现在:public enum Color { RED, GREEN, BLANK, YELLOW }2.支持switch JDK1.8之后的switch语句支持byte,short,int,char,数组,enum类型,使用枚举,能让我们的代码可读性更强。 switch(枚原创 2020-06-10 12:08:06 · 20031 阅读 · 3 评论 -
Java创建线程的方式是哪四种?比较优缺点,为什么要用线程池
Java创建线程四种方式:1. 继承Thread类;2. 实现Runnable接口;3. 实现Callable接口,实例化FutureTask类;4. 创建线程池(以下用Executor框架实现)说明:这四种方式都潜移默化都用到了Thread类(表示线程),所有线程对象都是Thread类或者其子类的实例,所以还有可以<匿名创建>线程,文章最后有分享。详细介绍四种方法:方式一:实现类继承Thread类步骤:①实现类去继承Thread类;②实现类重写Thread类中的run(原创 2020-06-10 00:55:13 · 15639 阅读 · 0 评论