![](https://img-blog.csdnimg.cn/20200624153734483.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础
java的一些小知识
Dug_Zhang
这个作者很懒,什么都没留下…
展开
-
解决序列化时重复创建出单例对象的问题
如果将单例对象序列化成字节序列后,然后再反序列成对象,那么就可以创建出一个新的单例对象,从而导致单例不唯一,避免发生这种情况的解决方案是在单例类中实现readResolve()方法。public class Singleton implements java.io.Serializable { private Object readResolve() { return INSTANCE; } } 通过实现readRe...原创 2022-03-13 16:14:07 · 588 阅读 · 0 评论 -
JAVA基础知识五
static为什么一般与final一起用?static和final的意义是不同的,static修饰的时候代表对象是静态的,而final修饰的时候代表对象只能赋值一次,他们连用的时候是因为定义的那个对象既要它是静态的,也要求它的值不能再被修改。举例说明:这里a和b的区别在于,a在程序里可以被重新赋值为2或3或等等的整数,而b在程序里不能被重新赋值,b永远都为1,也就是说b是一个常量。final int c=1;static final b=1;这里c和b的区别在于,b存放在静态空间,不会原创 2021-05-31 11:35:51 · 90 阅读 · 0 评论 -
LocalDateTime的常用操作
LocalDateTime和字符串互转import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;public static void main(String[] args) { //字符串转LocalDateTime String timeStr = "2021-05-19 18:06:16"; DateTimeFormatter dateTimeFormatter = Date原创 2021-05-19 17:47:32 · 157 阅读 · 0 评论 -
Java时间格式化时YYYY(大写)和yyyy(小写)的区别
Java时间格式化时YYYY(大写)和yyyy(小写)的区别在Java中,我们大多数情况下格式日期都是用的SimpleDateFormat,比如说把一个日期格式成"yyyy-MM-dd"的形式。我们要注意的是,对于年份来说,大写的Y和小写的y其意义是不同的。y 是Year, Y 表示的是Week yearWeek year的意思是,当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。 public static void main(String[] ar原创 2021-01-29 16:13:15 · 2525 阅读 · 4 评论 -
Java对象的浅拷贝和深拷贝
Java中的数据类型分为基本数据类型和引用数据类型。浅拷贝(Shallow Copy):对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象。因为是两份不同的数据,所以对其中一个对象的该成员变量值进行修改,不会影响另一个对象拷贝得到的数据。 对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。因为实际上两个对象的该成员变量都指向同一个实例.原创 2021-01-05 18:18:23 · 141 阅读 · 2 评论 -
String 你真的懂了吗?
String理解String是一个字符串类型的类,以前关于String的理解有这么几点:String 是final类,不可继承,且其内部一些重要方法被定义为final类型,不可重写 String 类比较字符串相等时时不能用“ == ”,只能用 "equals" 内部实现Serializable接口(支持字符串序列化)和Comparable接口(支持字符串比较大小)。 String类对象有两种实例化方式(直接复制 String a="abc";)和构造器复制(String b=new St.原创 2020-10-09 19:45:02 · 161 阅读 · 0 评论 -
java方法传值方式
java方法传值方式 首先说明,肯定以及确定的说明,java只存在值传递public class HelloWorld{ public static void main(String[] args){ Person person=new Person(); System.out.println(person); changeValue(person); System.out.println(person); } ..原创 2020-10-09 18:27:35 · 954 阅读 · 0 评论 -
基础知识四
结束多层for循环 关键字break和continue都是结束循环的作用,但是它只能结束它外面的第一层循环,如果代码里面是一层一层又一层的循环,你想直接结束最外层循环又该怎么做呢? 此时,就需要outer了。outer:for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if(j==0) { System.out.print(j); }else { break...原创 2020-09-22 19:13:56 · 326 阅读 · 0 评论 -
JAVA泛型
? T K V E等代表的意思? 表示不确定的java类型。T 表示java类型。K V 分别代表java键值中的Key Value。E 代表Element。原创 2020-09-22 18:11:52 · 75 阅读 · 0 评论 -
使用Arrays.asList()时的注意事项
问题一:查看下面方法的运行结果: public static void main(final String[] args) { System.out.println(Arrays.asList(new String[] { "a", "b", "c" })); System.out.println(Arrays.asList(new Integer[] { 1, 2, 3, 4, 5 })); System.out.println(Arrays.asList(new int[]原创 2020-09-22 18:07:48 · 240 阅读 · 0 评论 -
JAVA命名&注释规范
一、命名规范 1、项目名全部小写 2、包名全部小写 3、类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。 如:public class MyFirstClass{} 4、变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。 如:int index=0; public void toString(){} 5、常量名全部大写 ...转载 2020-08-25 17:11:37 · 110 阅读 · 0 评论 -
递归
递归的概述递归,指在当前方法内调用自己的这种现象递归分为两种,直接递归和间接递归。注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。请用递归算法求一个10的阶乘用递归去实现字符串的反转求1到n的和(n>=100 && n<=200)求整数n的阶乘(n <=10)递归遍历将指定文件夹的所有文件(包括所有子文件夹的文件)的全...原创 2020-08-04 18:10:31 · 129 阅读 · 0 评论 -
基础知识三
请描述转发和重定向的区别①:请求转发是在服务器内部进行跳转,重定向是在浏览器进行跳转②:请求转发浏览器地址栏不变 ,重定向地址栏改变③:请求转发可以携带共享数据 ,重定向不能携带共享数据④:请求转发路径为 /资源路径 ,重定向路径为: /项目名/资源路径区别:1.使用对象:重定向:response请求转发:request2.路径写法:重定向:客户端路径请求转发:服务器端路径3.能否外网跳转:重定向:带http协议的绝对路径请求转发:不可以,...原创 2020-08-04 18:03:43 · 229 阅读 · 0 评论 -
基础知识二
重载(Overload)和重写的区别.重载的方法能否根据返回类型进行区分.重载:在同一个类中,方法名相同,参数列表不同(参数类型不同,参数个数不同或者两者都不同),就是重载,重载对返回类型没有特殊要求,也就是说重载的方法不能根据返回类型进行区分.重载的规则:1)、必须具有不同的参数列表;2)、可以有不同的返回类型,只要参数列表不同就可以了;3)、可以有不同的访问修饰符;4)、可以抛出不同的异常; 重写(Override):重写发生在子类和父类之间,重写要求子类重写的方...原创 2020-08-04 17:36:44 · 197 阅读 · 0 评论 -
基础知识一
大小和占用空间不一样 大小和占用空间不一样是很正常的,硬盘分区的最小是以4k为计算单位的。就是说好像一个一个格子一样,这些格子比较大。 即使是一个文件写了一个字,它的大小不足1k,但是显示占用空间为4k强转超出范围byte b = 10;b += 120; //130 -128,-127,-126System.out.println(b);b = -126 byte的最小值是-128,最大值是127,就好像一杯水的容量是有限的,当你杯子的水装满了,自然也就会...原创 2020-08-04 16:10:10 · 212 阅读 · 0 评论 -
为什么要使用枚举,枚举为何被称为语法糖?
为什么要用枚举呢? 在JDK1.5之前,Java有两种方式定义新类型:类和接口。对于大部分面向对象编程来说,这两种方法看起来似乎足够了。但是在一些特殊情况下,这些方法就不适合。例如,想定义一个Color类,它只能有RED、GREEN、BLUE 3种值,其他的任何值都是非法的,那么JDK1.5之前虽然可以构造这样的代码,但是要做很多的工作,就可能带来很多不安全的问题。而JDK1.5之后引入的枚举类型就能解决这些问题。什么是枚举呢? 枚举,在数学上是指有穷序列集,就是说某一类东西,能...原创 2020-07-22 14:21:32 · 1646 阅读 · 2 评论 -
Java中Integer类型的比较
Integer a=300;Integer b=300;System.out.println(a==b);//falseSystem.out.println(a.equals(b));//true Integer把-128到127的整数都提前实例化了, 所以你不管创建多少个这个范围内的Integer都是同一个对象,他们的id相同。因为“==”比较的是地址,在上述代码中a、b地址不同。 所以对于-128到127的整数,可以直接用“==”来判断是否相等,对于范围之外的数...转载 2020-06-24 15:43:41 · 2807 阅读 · 0 评论