Java基础
java基础&jvm
IT猫咪酱
成为更有价值的攻城狮
展开
-
【报错】StackOverflow问题定位和解决
stackoverflow最可能出现的问题就是循环调用。根据日志中调用推断出循环调用方法。原创 2022-11-08 18:18:47 · 1827 阅读 · 0 评论 -
【基础】Java的native方法作用和意义
Java的native方法作用和意义转载 2022-11-01 16:25:04 · 622 阅读 · 0 评论 -
【java基础】为什么重写equals方法必须要重写hashCode方法
为什么重写equals方法必须要重写hashCode方法?转载 2022-10-26 17:18:28 · 200 阅读 · 0 评论 -
【java】finally块抛异常或者跳转或者包含return语句时的注意事项
finally块抛异常或者跳转或者包含return语句时的执行顺序原创 2022-07-05 21:03:30 · 706 阅读 · 0 评论 -
【java】BigDecimal 正确声明方式
BigDecimal声明注意方式原创 2022-07-05 20:46:29 · 1261 阅读 · 0 评论 -
【java】String.split方法limit详解
regex会切割掉,不会包含在string[]子穿中API:public String[] split(String regex) public String[] split(String regex, int limit) regex:切割正则匹配limit:当limit>0时,切割次数=limit-1,因此当limit=1时,不切割,原字符串输出当limit=0与不写limit一致:不限制切割次数,出现几次匹配切割几次。但是去除最后空字符串当limit<0原创 2021-08-12 17:04:24 · 3335 阅读 · 0 评论 -
【java】字符串正则表达式
1.正则表达式书写规则常用:.*代表任意字符?代表0-1次+代表1-N次^$代表开始结束|代表或[]代表字符集任意,[a-z]、[abc] \ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,n匹配字符n。\n匹配换行符。序列\\\\匹配\\,\\(匹配(。 ^ 匹配输入字符串开始的位置。如果设置了RegExp对象的Multiline属性,^ 还会与"\n"或"\r"...原创 2021-07-29 16:27:00 · 2505 阅读 · 0 评论 -
【java】Java8 Stream Lambda sorted()之正序倒序
下面代码以自然序排序一个listlist.stream().sorted()自然序逆序元素,使用Comparator 提供的reverseOrder() 方法list.stream().sorted(Comparator.reverseOrder())使用Comparator 来排序一个listlist.stream().sorted(Comparator.comparing(Student::getAge))把上面的元素逆序list.stream().sorted(Compara..转载 2021-07-09 15:42:59 · 1398 阅读 · 3 评论 -
【java】根据下标删除数组元素
最后一行,需要+0,否则会以为是删除对象,而不是下标 //resRow为数组,转为linkedList(比arraylist快)//hideIndexes:要删除的下标list List<Object> resRowList = Arrays.asList(resRow); List<Object> LinkedList = new LinkedList<>(resRowList); hideIndexes.stre.原创 2021-07-02 14:44:04 · 2122 阅读 · 0 评论 -
【java】Lambda Stream collect Collectors 常用实例
将一个对象的集合转化成另一个对象的集合List<OrderDetail> orderDetailList = orderDetailService.listOrderDetails();List<CartDTO> cartDTOList = orderDetailList.stream() .map(e -> new CartDTO(e.getProductId(), e.getProductQuantity()))转载 2021-04-12 17:15:09 · 272 阅读 · 0 评论 -
【java】正则表达式-替换字母数字下划线
str.replaceAll("[^(a-z0-9A-Z_)]","_");原创 2021-03-31 19:13:14 · 1370 阅读 · 0 评论 -
【报错】java.lang.UnsupportedOperationException解决方法
做开发一定要注重细节。在项目中对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,通过看源码发现问题,并写测试程序如下。代码块: public class ListTest { public static void main(String[] args) { String[] array = {"1","2","3","4","5"}; List<Stri..转载 2021-01-14 15:46:24 · 869 阅读 · 0 评论 -
【java】java8stream,遍历二维数组使用索引,往二维数组添加一列
使用java8中stream,遍历二维数组的情况,使用下标,并且往每行添加数据 Object[][] newData = (Object[][]) IntStream.range(1, data.length).mapToObj(i -> {//从第1行-最后一行 List list = new ArrayList(Arrays.asList(data[i - 1]));//下标-1,套两层因为里面的不能用add list.add(原创 2021-01-14 15:59:17 · 2811 阅读 · 0 评论 -
【java】数组转成list三种情况优劣对比
前言:本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解析。一.最常见方式(未必最佳)通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。关键代码:List list = Arrays.asList(strArray);private void testArrayCastToListError() { String[] strArray = new...转载 2021-03-17 10:26:24 · 197 阅读 · 0 评论 -
【java】lambda表达式内变量为final 报错:Variable used in lambda expression should be final or effectively final
我们在使用Java8 lambda表达式的时候时不时会遇到这样的编译报错:这句话的意思是,lambda表达式中使用的变量应该是final或者有效的final,为什么会有这种规定呢?其实在 Java 8 之前,匿名类中如果要访问局部变量的话,那个局部变量必须显式的声明为 final,如下代码在 Java 7 中是编译不过的: @Test public void demo() { String version = "1.8"; foo(new Suppl转载 2020-12-25 16:05:38 · 1928 阅读 · 0 评论 -
【java】java.class.cast()方法
1、Java apipublic T cast(Object obj);Casts an object to the class or interface represented解释的比较笼统,意思就是将一个对象装换为类或者接口。2、代码示例/** * Created by shengke on 2016/10/22. */class A { public static void show() { System.out.println("C转载 2020-12-22 14:53:10 · 640 阅读 · 0 评论 -
【java】Class类 getName()、getCanonicalName()、getSimpleName()、getTypeName() 方法的异同
【1】getName()返回该类对象作为字符串表示的实体(类、接口、数组类、基本数据类型或 void)的名称可以理解为返回的是虚拟机中 Class 对象的表示当动态加载类的时候,会用到该方法的返回值,如: 使用 Class.forName() 方法如果是内部类,则使用 $ 符号进行连接如果是数组,则使用 [ 来表示,数组是几维,[ 就有几个【2】getCanonicalName()返回 Java 语言规范定义的底层类的规范名称如果是一个本地类或匿名类或其组件的数组类型没有规范名称的,则转载 2020-12-21 17:09:41 · 1846 阅读 · 0 评论 -
【java】java负数
下面这行代码的输出是什么?public static void main(String[] args) { System.out.println(0xffffffff);}下面两行代码的输出相同吗?public static void main(String[] args) { byte b=-1; System.out.println((int)(char)b); System.out.println((int)(char)(b & 0xff));}请尝试在转载 2020-12-18 17:34:36 · 2558 阅读 · 1 评论 -
【java】foreach不能使用break和continue
今天在使用foreach()时发现,不能使用break和continue这两个关键字,通过查资料得知原来foreach和普通的for循环是不同的,它不是普通的遍历,要想实现continue的效果,可以直接使用return即可;但是如何实现break的效果呢,然而foreach是无法实现的,只要你使用它,就一定会遍历完的,除非你可以把它放进一个try中,通过抛出异常进行终止它。...原创 2020-12-15 16:23:03 · 2590 阅读 · 0 评论 -
【java】@PostConstruct注解
@PostConstruct基本:@PostConstruct注解好多人以为是Spring提供的。其实是Java自己的注解。Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Be...转载 2020-12-11 11:06:27 · 149 阅读 · 0 评论 -
【java】throw之后执行问题
public void add(int index, E element){ if(size >= elements.length) { throw new RuntimeException("顺序表已满,无法添加"); //return; //需要吗? } ....}为了回答这个问题,我编写了几段代码测试了一下,结果如下://代码1public static void test() throws Exception {.原创 2020-12-08 16:59:15 · 1132 阅读 · 0 评论 -
【maven】pom文件各个标签作用
复制代码<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> <!--父项目的坐标。如果项目中没有.转载 2020-12-03 20:56:52 · 3255 阅读 · 1 评论 -
【idea】 build 和rebuild区别
build:针对更改文件编译rebuild:clean+全部编译原创 2020-12-02 11:14:42 · 1517 阅读 · 1 评论 -
【java】jdk8 steam操作
上一篇我们介绍了stream的集中创建方式,《 java8 Stream-创建流的几种方式》,从这篇开始,我们开始介绍stream接口里的一系列方法的作用,以及使用,每个方法都会有相对应的案例的解析,让大家可以更加直观的方式,了解方法的使用,使用这些方法之前,我们先对方法的类型,进行归类,然后分类型进行讲解;下面,我们再看下接口定义public interface Stream<T> extends BaseStream<T, Stream<T>> { .转载 2020-11-27 11:21:14 · 947 阅读 · 0 评论 -
【java】DecimalFormat用法
importjava.text.DecimalFormat; publicclassTestNumberFormat{ publicstaticvoidmain(String[]args){ doublepi =3.1415927; //圆周率 //取一位整数 System.out.println(newDecimalFormat("0").format(pi)); //3 //...原创 2020-11-21 17:01:06 · 214 阅读 · 0 评论 -
【java】javadoc 注释开发详解
Javadoc虽然是Sun公司为Java文档自动生成设计的,可以从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。(Javadoc is a documentation generator from Sun Microsystems for generating API documentation in HTML format from Java source code. -- 维基百科)但是Javadoc的注释也符合C的注释格式,而且doxyen也支持该种风格的注释,所以简...转载 2020-11-20 21:00:34 · 293 阅读 · 0 评论 -
【java】CLOB和BLOB:java中数据库保存文件所用类型
BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。其实两个是可以互换的的,或者可以直接用LOB字段代替这两个。但是为了更好的管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。CLOB 定义 数据库中的一种保存文件所使用的类型。 Character Large Object SQL .转载 2020-11-20 10:07:47 · 2815 阅读 · 1 评论 -
【java】1.8新特性:@FunctionalInterface函数式接口
什么是函数式接口(Functional Interface)其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。这种类型的接口也称为SAM接口,即Single Abstract Method interfaces。函数式接口用途它们主要用在Lambda表达式和方法引用(实际上也可认为是Lambda表达式)上。如定义了一个函数式接口如下: @FunctionalInterface interf.转载 2020-11-18 20:23:34 · 187 阅读 · 0 评论 -
【java】除法,除数后缀
System.currentTimeMillis() - t) / 1000d计算时间时候后面带d,代表double,得到的结果是double类型java中除法和除数类型一致,还可以f代表float原创 2020-11-18 20:11:11 · 153 阅读 · 0 评论 -
【报错】Error: JAVA_HOME is incorrectly set. Please update E:\hadoop-2.5.2\conf\hadoop-env.cmd
问题:yarn install无法使用,报错如下Error: JAVA_HOME is incorrectly set. Please update E:\hadoop-2.5.2\conf\hadoop-env.cmdUsage: yarn [--config confdir] COMMAND where COMMAND is one of:解决方法:C:\Program Files\Java\jdk1.8.0_271改成JAVA_HOME=C:\PROG...原创 2020-11-07 11:21:37 · 388 阅读 · 0 评论 -
【java】throws和throw区别
throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。用在方法声明后面,跟的是异常类名可以跟多个异常类名,用逗号隔开表示抛出异常,由该方法的调用者来处理throws表示出现异常的一种可能性,并不一定会发生这些异常throw:则是用来抛出一个具体的异常类型。用在方法体内,跟的是异常对象名只能抛出一个异常对象名...转载 2020-05-07 18:54:12 · 300 阅读 · 0 评论 -
【报错】Error running ‘WebappApplication‘: Command line is too long. Shorten command line for WebappAppl
问题:启动项目报错:Error running 'WebappApplication': Command line is too long. Shorten command line for WebappAppl解决方法:启动参数修改:edit configuration-springboot-webapplication-shorten command line改成class file或者jar mainfest即可这里改成class fileshorten command l..原创 2020-11-13 14:38:49 · 3662 阅读 · 2 评论 -
【报错】有jar包,但是import报错
问题:import报错,jar包都有,打包也没有问题,maven clean update都不行解决方法:删除workspace项目里的.idea文件夹,重启即可。.idea文件里装的是项目配置文件、版本信息和历史记录原创 2020-11-13 14:31:12 · 661 阅读 · 0 评论 -
【java】String.format()
String.format()字符串常规类型格式化的两种重载方式format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。 format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。上个栗子有用到了字符类型和整数类型的格式化 下面我把常用的类型例举出来转换符 详细说明 示例 %s 字符串类型转载 2020-11-10 11:43:46 · 130 阅读 · 0 评论 -
【算法】借助LinkedList 类中的方法实现栈
1、栈的实现 1)栈的功能:进栈、出栈、返回栈口元素…… 2)详解的过程看代码吧: [java]view plaincopyimportjava.util.*; //1借助LinkedList类中的方法实现栈 publicclassMyStack{ privateLinkedList<Object>li=newLinkedList&l...转载 2020-10-26 23:44:22 · 188 阅读 · 0 评论 -
【java】Comparator()与comparaTo()
1.为什么写?comparator 是javase中的接口,位于java.util包下,该接口抽象度极高,有必要掌握该接口的使用大多数文章告诉大家comparator是用来排序,但我想说排序是comparator能实现的功能之一,他不仅限于排序2.接口功能该接口代表一个比较器,比较器具有可比性!大多数文章都写如何用comparator排序,是因为javase数组工具类和集合工具类中提供的s...转载 2020-05-07 12:39:30 · 198 阅读 · 0 评论 -
【jvm】jvm区域划分
jvm在java程序运行中会把内存区域划分成若干区域进行管理,每个区域的创建、销毁和功能各不相同。 其中方法区和堆是所有线程共享的数据区,栈(虚拟机栈和本地方法栈)和程序计数器是线程隔离的。2.程序计数器内存:很小,相对于其他区域可以忽略 功能:用来记录当前线程所执行的字节码行号,如果是native方法。计数器为undefined内存溢出:不存在,是jvm中唯一没有规定内原创 2019-06-06 14:53:19 · 346 阅读 · 0 评论 -
【JVM】java 虚拟机--新生代与老年代GC
java虚拟机中GC初步了解转载 2016-12-09 15:27:46 · 382 阅读 · 0 评论 -
【java】substring和substr函数区别
记忆点:substring全称=两个下标,substr不全=开始+长度,开始可用负数倒着数1、substring 方法用于提取字符串中介于两个指定下标之间的字符substring (start , end)开始和结束的位置,从零开始的索引,包头不包尾参数 描述start 必须。 一个非负的整数,规定要提取的子串的第一个字符在stringObject 中的位置en...转载 2019-10-18 15:51:31 · 531 阅读 · 0 评论 -
【Java】DecimalFormat的主要功能及使用方法
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。 DecimalFor转载 2017-01-10 09:57:58 · 452 阅读 · 0 评论