![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础
记录javase常见的问题
紫乾2014
这个作者很懒,什么都没留下…
展开
-
用stream筛选出员工集合中年龄大于25的员工并根据年龄降序排序?
【代码】用stream筛选出员工集合中年龄大于25的员工并根据年龄降序排序?原创 2023-04-11 23:41:17 · 306 阅读 · 1 评论 -
手写jdbc的使用步骤?
System.out.println("请输入用户名");//输入'u'or'1=1'System.out.println("请输入密码");//输入'p'or'1=1'//能够防止sql注入。statementMethod();//有sql注入风险。//6、处理结果集(查询才需要处理结果集)//5、处理结果集(查询才需要处理结果集)//4、sql语句占位符设置实际参数。//3、获取Statement对象。//3、获取预处理对象。//5、执行sql语句。...原创 2022-07-22 17:28:05 · 600 阅读 · 0 评论 -
说说对hashcode和equals方法的理解?
当向哈希表中存放元素时,会先调用对象的hashCode方法,算出对象在哈希表中的存放位置,如果该位置没有元素则直接存入,如果该位置有元素则说明存在哈希冲突,这时会调用对象的equals方法,比较这两个对象是不是同一个对象,如果equals方法返回的是true,那么就不会把第二个对象存放到哈希表,如果返回的是false,就会存入。equals它的作用是判断两个对象是否相等,如果对象重写了equals()方法,比较两个对象的内容是否相等;这个哈希码的作用是确定该对象在哈希表中的索引位置。............原创 2022-07-22 11:55:45 · 170 阅读 · 0 评论 -
说说常见的异常有哪些?
java.util.concurrent.TimeoutException执行超时异常。java.util.zip.DataFormatException数据格式化异常。java.lang.ClassNotFoundException类找不到的异常。java.lang.NumberFormatException数字格式异常。java.lang.ClassCastException类型转换异常。java.lang.ArithmeticException算数异常。...原创 2022-07-21 11:10:11 · 139 阅读 · 0 评论 -
说说StringBuffer和StringBuilder的底层原理?
首选String是常量,因此对String进行字符串追加操作是会不断创建新的字符串,这样效率非常低,而StringBuffer和StringBuilder底层维护的是字符数组,会将追加的字符串设置进字符数组,等到快要达到数组长度了才会进行数组复制扩容,相对于String追加字符串每次都要新建字符串来说会快很多。...原创 2021-12-03 17:24:32 · 460 阅读 · 0 评论 -
说说Thread类的sleep方法和wait方法的区别
1、调用sleep方法会释放cpu使用权,但是不会释放锁对象,达到设定时间线程会重新争夺cpu使用权。2、调用wait方法会释放cpu使用权,同时也会释放锁对象,需要被notify或者设置的超时已过就会重新获取锁对象以及重新争夺cpu使用权。...原创 2021-12-03 16:14:42 · 634 阅读 · 0 评论 -
说说对等待唤醒机制的理解?
1、概念多线程同时作用在同一个资源的不同任务上,并且多个任务之间是存在相互依赖关系,A任务没有执行完成B任务就不能执行,B任务没有执行完成A任务就不能执行,这个时候就需要用到线程之间的通信等待唤醒机制,线程1将A任务完成了就通知线程2执行B任务自己进入等待状态,反过来也是如此。2、前提条件多线程必须作用在同一对象的不同同步方法上。3、操作方法wait:释放锁对象,释放cpu使用权。notify:唤醒被wait的线程,一次只唤醒一个而且是任意的。注意:调用wait和notify的锁原创 2021-12-03 16:02:37 · 96 阅读 · 0 评论 -
说说对注解和元注解的理解?
1、注解和javadoc不同,可以通过反射获取注解内容,编译器生成类文件时注解内容也会一并生成到字节码中。2、元注解是作用在注解上的注解。原创 2021-12-03 14:33:22 · 384 阅读 · 0 评论 -
说说异常和错误的区别?
1、继承体系Exception和Error都继承自Throwable2、严重程度Error比Exception往往要严重很多,Exception即使发生了没作任何处理对整个程序的影响也往往是局部性的导致局部的功能走不通,而Error发生了如果不做处理对程序的影响往往是全局的比如OutOfMemoryError没有及时处理很有可能整个程序的功能都会受到影响。3、处理方式Exception可以捕获处理或者声明或者抛出让调用者处理,Error则需要通过修改代码或者对jvm进行调优来处理。..原创 2021-12-03 12:00:44 · 115 阅读 · 0 评论 -
说说进程与线程的关系
1、应用程序进入内存至少会开一个进程,而进程的最小执行单元就是线程。2、多个进程之间的资源是相互独立的,同一个进程里面的多个线程是共享该进程的资源。3、对于多核cpu多个进程是可以实现并行的,一个进程里面的多线程只能实现并发。...原创 2021-12-03 10:01:13 · 70 阅读 · 0 评论 -
说说序列化和持久化的区别
在计算机中存储数据和网络传输数据都是用二进制进行的,类实现序列化接口就是让该类的对象具备转换为二进制数据的能力,持久化是将对象数据存储到磁盘或者数据库,因此可以说类实现序列化是该类的对象进行持久化的前提,如果类不实现序列化接口,则该类的对象不能进行网络传输不能进行持久化。......原创 2021-12-02 18:05:32 · 721 阅读 · 0 评论 -
说说transient的特点
1、transient只能用来修饰类的成员变量。2、被transient修饰的成员变量不参与类的对象的序列化。原创 2021-12-02 17:41:31 · 240 阅读 · 0 评论 -
说说缓冲流的原理
对大文件进行读写操作,缓冲流比普通流效率高很多,是由于缓冲流会在内存中会开辟缓冲区,算是用空间换时间。比如BufferedInputStream的读操作,如果输入缓冲区没有数据,BufferedInputStream会一次性读取默认缓冲区大小的数据比如读取默认大小8192个字节存放在输入缓冲区,然后用FileInputStream进行读操作,同样BufferedOutputStream的写操作,首选是通过FileOutputStream将字节写入到输出缓冲区,然后等达到缓冲区默认大小时再一次性将缓冲区默认大原创 2021-12-02 17:11:53 · 390 阅读 · 0 评论 -
利用转换流将GBK格式文件以UTF-8输出
代码示例:package cn.zxj.temp;import java.io.*;public class Test { public static void main(String[] args) throws Exception{ //先造GBK编码的文件(windows下用记事本打开右下角显示ANSI,GBK是ANSI的子集) doGBK(); //转UTF-8写出(windows下用记事本打开显示两个文件比较右下角字符集) ...原创 2021-12-02 15:40:36 · 420 阅读 · 0 评论 -
说说转换流的作用
1、InputStreamReader(字符输入转换流)可以从字节输入流中读取字节,然后用指定编码集将字节解码成字符。2、字符输出转换流(OutputStreamWriter)先将字符写到自己的缓冲区,然后用指定编码集将字符编码成字节,再调用flush或者close或者缓冲区满了使用字节流将这些字节写入到指定的文件。3、与FileWriter和FileReader的区别FileWriter是OutputStreamWriter的子类,FileReader是InputStreamReade原创 2021-12-02 14:50:54 · 725 阅读 · 0 评论 -
说说字节流和字符流的区别
1、输入流区别字节输入流读取的是字节,字符输入流读取的是字节经过码表转换后的字符。2、输出流区别字节输出流输出的是字节,字符输出流直接输出的是字符,但是字符会经过码表转换为字节存储。...原创 2021-12-01 17:44:07 · 2754 阅读 · 0 评论 -
写一个contains 方法供集合判断元素唯一性?
package cn.zxj.com;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.ConcurrentHashMap;public class Uniqueness { public void contains(List<String> list) { Concu...原创 2021-12-01 17:03:45 · 199 阅读 · 0 评论 -
说说对Lambda的理解?
lambda是一个匿名函数,它可以做为参数进行传递,它提高了代码的灵活性和简洁度。原创 2021-12-01 15:58:43 · 59 阅读 · 0 评论 -
第20个月繁殖多少对兔子?(利用BigInteger完成)
故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契。 在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔, 再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡, 问:第20个月繁殖多少对兔子?代码示例:package cn.zxj.com;import java.math.BigInteger;class Test { public static void main(String[] args)...原创 2021-12-01 15:19:39 · 231 阅读 · 0 评论 -
说说java日期处理常见的坑?
1、Calendar获取的月份是0-11,实际月份处理需要加1。2、日期格式yyyy-MM-dd hh:mm:ss 大小写含义差别导致的问题。踩坑点年份大写YYYY:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。月份小写mm:小写mm是表示时间的分钟,如果月份位置写的小写mm则会设置到分钟位置,月份位置默认设置成1月。天大写DD:DD表示一年中的多少天。小时大小写: jdk8中测试小时hh和HH没有区别。分钟大写MM:大写MM表示月份,如果原创 2021-12-01 14:34:33 · 375 阅读 · 0 评论 -
说说equals和==的区别?
1、==可以用来比较基本数据类型的数值,而基本数据类型是不能调用方法的是不能使用equals方法来做比较的。2、对于引用数据类型,==是比较变量引用的对象内存地址是否相同,==比较引用数据类型要求两边的操作数类型必须相同或者有子父类关系,Object中的equals方法用的是==因此也是比较变量引用的对象内存地址是否相同,如果是重写过的equals方法要看具体的实现,比如String重写后的equals方法是比较字符串的值是否相同。......原创 2021-11-30 15:05:36 · 76 阅读 · 0 评论 -
局部内部类访问局部变量,该局部变量必须用哪个关键字修饰,为什么?
该局部变量必须用final关键字修饰。局部变量如果没有被final修饰的话是会做为普通的局部变量存入到java虚拟机栈,随着方法的压栈而创建弹栈而销毁,方法执行完被销毁后局部内部类对象并不会马上被回收可能还在内存中,这个时候局部变量没有了,如果后面有执行到局部类里对于局部变量的引用部分就会出现异常,因此将局部变量用final关键字修饰然后存放在方法区的常量池中能比对象存活的更久就能避免这样的异常。...原创 2021-11-30 11:51:19 · 370 阅读 · 0 评论 -
说说static关键字的特点和使用场景?
一、特点1、static关键字修饰的成员被该类所有的对象共享。比如static修饰的成员变量属性值被其中一个对象修改了,那么其它对象访问到的属性值也会跟着改变。2、static关键修饰的成员可以用类名.变量名或者类名.方法名(参数)直接访问。二、使用场景1、当类的成员变量是共性数据,需要被该类的所有对象所共享时,需要使用static关键字来修饰该成员变量。比如银行卡账户余额,无论是直接刷银行卡还是通过电子支付创建交易都需要对银行卡账户余额进行减扣,因此在一个交易类中是可以用static修饰账原创 2021-11-30 10:44:16 · 1692 阅读 · 0 评论 -
说说static关键字的注意事项?
1、静态成员是优先于对象存在的,在静态成员中不能使用this/super关键字。2、静态成员只能访问静态成员,但是非静态成员可以访问静态成员。原创 2021-11-30 10:12:50 · 51 阅读 · 0 评论 -
给成员变量赋值有几种方式?有什么区别?
1、直接赋值对象.属性名=属性值,要求先要创建对象。2、构造函数赋值创建对象的同时用this.属性名= 属性值赋值。3、set方法用this.属性名= 属性值赋值,要求先要创建对象再用对象调用set方法。4、反射通过反射的方式来设置成员变量属性值。5、子类构造函数调用父类构造函数给父类成员变量赋值在子类构造函数中用super(属性值)调用父类构造函数给父类成员变量赋值,要求有继承关系要求父类有有参构造函数。6、在子类方法中给父类成员变量赋值在子类方法中用super原创 2021-11-30 09:58:21 · 3685 阅读 · 0 评论 -
说说对类优先原则以及接口冲突的理解?
1、当子类同时继承了父类和实现了多个接口时,如果父类中的方法的方法名及参数和接口中的默认方法的方法名及参数相同时,子类优先使用父类的方法。2、当子类同时实现了多个接口时,如果一接口中的默认方法的方法名及参数与另一接口的方法的方法名及参数相同时(不管该方法是否是默认方法),那么子类必须覆盖该方法来解决冲突。......原创 2021-11-29 17:57:20 · 231 阅读 · 0 评论 -
说说什么是函数式接口?
定义:只包含一个抽象方法的接口称为函数式接口。检查:可以用@FunctionalInterface来检查一个接口是不是函数式接口对于函数式接口javadoc也会包含一条声明来说明这个接口是函数式接口应用:可以通过lambda表达式来创建函数式接口的对象。注意:为了将lambda作为参数传递,接收lambad表达式的参数类型必须是与该lambda表达式兼容的函数式接口的类型。...原创 2021-11-29 17:02:30 · 254 阅读 · 0 评论 -
说说对继承的理解?
定义:在已有类的基础上新创建一个类并用extends关键字指向已有类,这个类会自动拥有原有类的所有非private的属性和方法,这就是继承。好处:继承提高了代码的复用性,提高了软件开发效率。继承让类与类之间产生了关系,提供了多态的前提。...原创 2021-11-29 16:22:25 · 109 阅读 · 0 评论 -
说说对封装的理解
1.封装体封装体最小单位是方法,将实现某一个功能的代码写到到一个方法中就是完成了一次封装。将多个类似功能的方法写到一个类中,也可以说这个类也是一个封装体。2.封装的好处封装可以提高代码复用率,比如封装的某个功能的方法可能很多地方都会被用到,其他地方只要调用就好,而不用重复去实现。封装隐藏了实现细节,并对外提供访问,调用者只用关注传递什么参数以及返回值是什么,而不用关注封装方法的本身实现细节。封装提高了代码的安全性,比如将类的容易产生安全问题的属性和方法都私有化,比如员工类有一个年龄属原创 2021-11-26 14:24:02 · 619 阅读 · 0 评论 -
说说局部变量和成员变量的区别
1、定义位置不同成员变量定义在类中,局部变量定义在方法或者代码块中。2、作用域不同成员变量在整个类中可以使用,局部变量只可以在所在的方法或者代码块中使用。3、内存位置不同成员变量是存储在堆内存的对象中,局部变量是存储在栈内存的方法中。4、生命周期不同成员变量随着对象的创建而创建,随着对象的销毁而销毁。局部变量随着方法的压栈而创建,随着方法的弹栈而销毁。5、初始化不同成员变量由于是存储在堆内存是会有默认值的,局部变量必须要显式赋值才可以使用。...原创 2021-11-26 11:45:16 · 134 阅读 · 0 评论 -
说说面向对象和面向过程思想的区别
1、定义面向对象是指分析完成一个流程会用到哪些对象,比如要完成一个完整的网上购物操作,用面向对象来简单分析一下就是会有卖家、快递员、买家参与,买家是负责下单和收货,卖家是发货,快递员是负责货物运输。面向过程是指分析要完成一个流程有哪些步骤,比如线下购物,用面向过程来分析就是分为去店铺、购买商品、运输商品返回目的地这些步骤,这些步骤的主体都是消费者来完成的。2、优缺点面向对象由于多对象的参与,每个对象都有自己的分工,因此耦合度比较低,代码可维护性比较高,同样由于创建多个对象资源开销比较大,因此原创 2021-11-26 11:01:39 · 229 阅读 · 0 评论 -
说说byte by = -130;有没有问题?有问题如何解决?结果是多少呢?
有问题,编译会不通过,要进行类型转换,(byte)-130,转换后的结果是126。分析:第一、-130默认是int类型,先看看130的原码(正数的原码和补码相同)00000000 00000000 00000000 10000010第二、计算-130的原码(只需要将130的原码最高位符号为变为1)10000000 00000000 00000000 10000010第三、计算-130的补码,在计算机中负数的原码和补码不同(计算机是以补码形式存储数据的)11111111...原创 2021-11-25 18:03:17 · 1245 阅读 · 0 评论 -
看程序写结果:请自己独立分析,先不要编译运行?
第一题 int x = 1,y = 1; if(x++==2 & ++y==2) { x =7; } System.out.println("x="+x+",y="+y); --------------------------------------------------- 第二题 int x = 1,y = 1; if(x++==2 && ++y==2) { ...原创 2021-11-25 15:27:40 · 269 阅读 · 0 评论 -
看以下数据类型转换?
byte b1=3,b2=4,b;b=b1+b2;b=3+4;哪句是编译失败的呢?为什么呢? byte b = 10;b++;b = b + 1;哪句是编译失败的呢?为什么呢?答案:b = b1+b2编译失败,编译器不能判断变量的运算结果会自动将b1+b2的运算结果判断为int类型b = b + 1编译失败,编译器不能判断变量的运算结果会自动将b+1的运算结果判断为int类型...原创 2021-11-25 15:05:07 · 162 阅读 · 0 评论 -
说说使用BigDecimal中遇到的坑?
1、空指针BigDecimal进行运算时必须要保证对象本身不能是null,否则就会抛空指针异常。2、创建BigDecimal对象时,构造函数不要传入浮点数据类型。传入float或者double浮点类型数据会丢失精度,应当尽量传入String类型数值。.........原创 2021-11-24 20:34:03 · 1383 阅读 · 0 评论 -
说说类和对象的区别
类可以理解成某一种事物的模型,是一个抽象的概念,而对象可以理解这种事物的一个具体事物。比如人类就是指拥有吃饭、睡觉、工作、学习等共同特征的生物的统称,而具体的一个活生生的人就是人类的一个实例一个对象。...原创 2021-11-24 20:18:42 · 43 阅读 · 0 评论 -
手写冰箱装大象的java代码
代码示例:Elephant.javapackage cn.zxj.question;import java.math.BigDecimal;public class Elephant { private String varieties; private BigDecimal weight; public String getVarieties() { return varieties; } public void setVar...原创 2021-11-24 20:05:19 · 281 阅读 · 0 评论 -
键盘录入任意三个数据,求最大的值和最小的值?
package cn.zxj.com;import java.util.Scanner;/*键盘录入任意三个数据,求最大的值和最小的值?*/class Test { public static void main(String[] args) { int[] arr = input(); maximum(arr); } private static void maximum(int[] arr) { for(int ...原创 2021-11-24 17:06:23 · 954 阅读 · 0 评论 -
完成以下编程?
A:二维数组遍历获取到每一个值 int[][] intArr = {{12,3,8},{11,8,32,7},{13,44,55}}; B:公司年销售额求和 某公司按照季度和月份统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99代码示例:package cn.zxj.com;class Test { ...原创 2021-11-24 16:35:34 · 162 阅读 · 0 评论 -
说说变量和常量的区别?
1、常量是指固定的数值或者是被final修饰的变量。2、变量可以理解成某一数据类型的容器,比如int i,i就是变量,可以存储任意类型的int类型常量。原创 2021-11-24 15:21:26 · 1560 阅读 · 0 评论