
javaSE
java基础知识
五块兰州拉面
你的所有烦恼都来自于读书太少而想的太多 ——杨绛
展开
-
java批量修改windows文件名
循环遍历目录及其子目录,打印文件名,有后缀名为.wma/.png的文件,有10个子目录,现在需要把.wma改成.mp4,.png改成.jpg,需要批量修改文件名。replace(char oldChar, char newChar)replaceAll(String regex, String replacement)import java.io.File;import java.io.FileFilter;public class test { public static void m原创 2021-05-25 15:09:57 · 281 阅读 · 0 评论 -
Math.random和new Random
new Random(10)可指定范围种子,不要指定,不指定则生成随机数。random.nextInt(10)范围是0-10,不包括10的整数范围种子相同,两次结果一样。存在安全性,如果可以获得源码,就能知道下次生成的数据。Math.random()0-1,不包括1的浮点数底层和new Random()一样...原创 2021-01-04 20:18:45 · 566 阅读 · 0 评论 -
final修饰成员变量和局部变量的区别
昨晚12点以后,跟人讨论问题,无意中聊到了final可以修饰的类型以及修饰后所具备的特点,可以详见java基础问题101问(javaSE阶段知识汇总)聊到final修饰成员变量和局部变量有什么区别时,只是隐约记得大概,没有十足把握,于是进行论证先告知论证结果final修饰成员变量和局部变量1.都不能被改变,也就是不能被二次赋值。引用类型是地址值不能被改变,对象中的属性可以改变2.成员变量在声明时必须被赋值,局部变量声明时可以不赋值,当局部变量被第一次赋值以后,不能二次赋值论证局部变量补充原创 2020-12-27 15:02:55 · 1383 阅读 · 2 评论 -
IDEA中导入junit4jar包使test单元测试正常使用
IDEA中不会自动导入junit的jar包,无法直接进行test单元测试,如图点击file --project structure --Global Libraries,导入idea安装目录下lib目录下的以下三个jar包添加时注意选择需要进行test测试的模块,不能选择工程接下来就可以正常进行test单元测试了,输入@Test,alt+回车,自动导入junit包参考部分文章,说需要...原创 2020-01-27 22:52:27 · 5600 阅读 · 0 评论 -
内存泄漏和内存溢出区别与联系
一、什么是内存溢出和内存泄露内存泄漏(memory leak):是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少获取多次导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。2、内存溢出 (out of memory)::指程序申请内存时,没有足够的内存供申请者使用,导致数据无法正常存储到内存中。也就是说给你个int类型的存储数据大小的空间,但是却存储一个long类型的转载 2020-09-22 11:34:36 · 2592 阅读 · 0 评论 -
反射的三种用途及应用
r到目前为止我们已经知道了当一个class文件被类加载器加载进内存时,会在JVM中将形成一份描述该class文件结构的元信息对象Class,通过该对象JVM就可以获知class文件的结构信息:如构造器,字段,方法等。由面向对象引发的思考:既然万物皆对象,那么类名、构造器、字段、方法等这些信息当然也需要封装成一个对象,这就是Class类、Constructor类、Field类、Method类。而通过Class类、Constructor类、Method类、Field类等类的实例对象就可以得相应的信息.原创 2020-09-13 21:12:57 · 1318 阅读 · 1 评论 -
枚举类使用方法
枚举类的说明:1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类2.当需要定义一组常量时,强烈建议使用枚举类3.如果枚举类中只一个对象,则可以作为单例模式的实现方式。枚举类型的注意事项1、定义枚举类型必须使用enum关键字,创建的其实也是一个普通的类。2、所有的枚举项,必须定义在枚举类型的第一行(第一个分号之前),枚举项之间使用逗号分隔,最后一个枚举项之后需要使用分号结尾3、枚举类型也有构造方法,只能默认提供空参构造,需要我们手动定义有参构造。在枚举类型中,所有的构造方法,原创 2020-09-10 16:59:19 · 2831 阅读 · 0 评论 -
多线程知识汇总,看这一遍就够了
01. 程序(programm)概念:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,一般存储在硬盘中。02. 进程(process)概念:程序的一次执行过程,或是正在运行的一个程序。说明:进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域,存储在内存中。03. 线程(thread)概念:进程可进一步细化为线程,是一个程序内部的一条独立的执行路径。说明:线程作为调度和执行的单位,每个线程拥独立的运行栈和程序计数器(pc),线程切换的开销小。一个进程可以有原创 2020-09-09 17:03:34 · 314 阅读 · 0 评论 -
文件和io流
file类boolean createNewFile():创建当前File对象所描述的路径的文件boolean mkdirs():创建当前File对象所描述的路径的文件夹(如果父级路径不存在,那么自动创建父级路径)delete在删除文件夹的时候,只能删除空文件夹renameTo(File dest)重命名如果在同一个文件夹下,修改路径,就是重命名如果在不同文件夹下,修改路径,就是剪切exists():判断当前调用者File对象,是否存在isFile():判断当前调用者Fi原创 2020-09-05 15:02:15 · 172 阅读 · 0 评论 -
java基础问题101问(javaSE阶段知识汇总)
1.JDK、JRE、JVM的关系2.为什么配置path环境变量?path环境变量:windows操作系统执行命令时所要搜寻的路径为什么要配置path:希望java的开发工具(javac.exe,java.exe)在任何的文件路径下都可以执行成功。3.标识符命名规则4.标识符命名规范5.变量的分类声明long型变量,必须以"l"或"L"结尾定义float类型变量时,变量要以"f"或"F"结尾6.break和continue的区别7.数组的理解:数组(Array),是多个相同类型原创 2020-08-29 16:19:22 · 1654 阅读 · 0 评论 -
java中什么是工具类
工具类,顾名思义,就是使用的工具,哪里有需要就往哪里添加它,当遇到非静态的工具类,调用的时候还要去new一下。用static修饰的都是属于类成员,类成员可以直接调用的,不是用static修饰的,必须使用类的对象去调用。常见的有,object,String,时间日期类,Arrays,Math,Scanner...原创 2020-08-29 10:13:52 · 4403 阅读 · 0 评论 -
字符串比较compareTo
按ascii码比较大小,大于返回正数,小于返回负数,等于返回零。原创 2020-08-08 13:43:28 · 238 阅读 · 0 评论 -
Scanner类中next()和nextLine()的区别
/*对于键盘录入对象Scanner对象的两个录入字符串方法的区别Scanner sc = new Scanner(System.in);sc.next()和 sc.nextLine();的区别next() 对于录入的字符串碰到空格就会停止录入nextLine()会把整行字符串全部录入并且sc.next() 在录入字符串后会在尾部加一个 \r\n因而sc.nextLine()会录入 \r\n 而导致原来nextLine要录入的字符串没有录入*/例子1package demo1;imp转载 2020-05-23 10:51:14 · 253 阅读 · 0 评论 -
io缓冲流高效原因及读写原理
字符型缓冲流有哪些,其高效的原因是什么?有哪些特有的方法?BufferedReader特有方法: readLine() 一次读到文件中的一行。BufferedWriter特有方法: newLine() 写入一个换行。高效的原因:BufferedReader:每次调用read方法,只有第一次从磁盘中读取了8192个字符,存储到该类型对象的缓冲区数组中,将其中一个返回给调用者,再次调用read...原创 2020-03-09 22:43:16 · 1596 阅读 · 2 评论 -
io流中拷贝uft-8格式文件举例
package homework;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.Fi...原创 2020-03-09 22:27:49 · 269 阅读 · 0 评论 -
java数组、集合、集合工具类总结
1.先讲讲为什么引入集合,就要从数组特点讲起:集合与数组存储数据概述:集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中)数组存储的特点:一旦初始化以后,其长度就确定了。数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。 比...原创 2020-03-07 23:18:27 · 219 阅读 · 0 评论 -
String字符串的创建,拼接及底层实现
String由于其底层数组是private final的,不可改变,且没有提供任何操作其私有数组的方法,所以String字符串是不可改变的。常量池(与字符串息息相关)任何好的编程语言的关键目标之一是高效的使用内存,随着应用程序的增长,String字面值占用大量的内存非常常见。对程序而言,全部String字面值中往往有大量的冗余,为了使java更高效地使用内存,JVM留出一块特殊的内存区域,...原创 2020-02-27 20:59:56 · 761 阅读 · 0 评论 -
StringBulider,StringBuffer和String关系
StringBuffer和StringBuilder的区别相同点: 都是字符串的缓冲区,都是字符串的生成器,都是可变的字符序列不同点: 1、出现版本不同: StringBuffer在jdk1.0出现的 StringBuilder在jdk1.5出现的 2、线程安全性不同: StringBuf...原创 2020-02-27 20:58:17 · 174 阅读 · 0 评论 -
StringBuilder扩容时底层数组的实现原理
StringBuilder底层是一个普通数组,提供了一系列操作方法而String是私有的final数组,没有操作的方法StringBuilder用append添加元素,查看底层源码此处要注意,StringBuilder调用的是父类的append方法,且最终返回this当前StringBuilder对象,所以,其地址不变,一直添加扩容。查看其父类AbstractStringBuild...原创 2020-02-27 20:55:14 · 1443 阅读 · 0 评论 -
Java中char[]打印数组名输出不是内存地址的原因详解
1.基本数据类型①Java中共有八种基本数据类型:byte,int,short,long,float,double,char,boolean。举例直接输出对应数值2.引用数据类型①举例在堆内存中开辟一块内存空间,把空间的地址返回给当前对象,所以打印出地址值。可查看当前println方法底层源码以object类型传入,调用的是object的tostring②同理,数组也是...原创 2020-02-20 20:54:07 · 4796 阅读 · 3 评论