![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础
java基础知识
CSDN最菜
这个作者很懒,什么都没留下…
展开
-
java中String和StringBuilder的replace方法
String类主要有三种:(1) replace(char oldChar, char newChar):将所有与oldChar相同的字符替换为newChar,返回新的字符串,原字符串不改变。(2) replaceAll(String regex, String replacement) :将所有与regex相同的字符串替换为replacement,返回新的字符串,原字符串不改变。(3) replaceFirst(String regex, String replacement):将第一个与re..原创 2020-05-26 09:47:58 · 10231 阅读 · 0 评论 -
java8中Optional类
记录一下:https://www.cnblogs.com/zhangboyu/p/7580262.html原创 2020-05-12 15:28:18 · 82 阅读 · 0 评论 -
匿名内部类
匿名内部类的定义语法格式:实现接口:new 实现接口(){ //匿名内部类类体部分}继承类:new 父类构造器(实参列表){ //匿名内部类类体部分}对于实现接口,由于接口是没有构造函数的,注意这里一定是空参数。第二种是调用父类的构造器,注意此处可以是空参数,也可以传入参数。...原创 2020-05-11 22:11:55 · 106 阅读 · 1 评论 -
volatile关键字的作用
两个作用:在当前的java内存模型下,线程可以把变量保存在本地内存中,比如说机器的寄存器,而不单单是在主内存中进行读写,所以有可能出现这样的情况:一个线程在主存中更改了一个变量的值,另外一个线程在本地内存中读取了这个变量值的旧值,这就造成的数据的不一致。而将变量声明为volatile则是告诉jvm这个变量是不稳定的没每次都要从主存中读取。可以防止指令的重排。看个例子:多线程下单例模式的线...原创 2020-05-07 11:10:35 · 70 阅读 · 0 评论 -
静态内部类与非静态内部类的区别
静态内部类与非静态内部类的一个最大区别就是非静态内部类会默认创建一个指向外围类的引用,而静态内部类则不会,这就意味着:静态内部类不能访问其所在外部类的非静态成员变量和成员方法;它的创建不依赖外围类的创建。https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/java/basic/final,static,this,super.m...原创 2020-05-05 19:41:38 · 122 阅读 · 0 评论 -
Comparable 和 Comparator接口
两者都是用于比较数据的大小,实现Comparable 需要重写compareTo()方法;实现Comparator需要重写compare()方法。Compareble接口使用示例:如下代码所示,使用Compareble实现数据的比较需要在类中实现compareTo()方法。Java的很多类已经实现了Comparable接口,比如说String,Integer等类。class Test { ...原创 2020-05-05 19:35:14 · 261 阅读 · 0 评论 -
除数为2的幂次方的简单求余操作
对于除数为2的幂次方的求余操作,可以用&运算代替,即: ...原创 2020-05-05 13:03:55 · 1209 阅读 · 0 评论 -
list遍历方式选择
实现了 RandomAccess 接口的list,优先选择普通 for 循环 ,其次 foreach。未实现 RandomAccess接口的list,优先选择iterator遍历(foreach遍历底层也是通过iterator实现的),大size的数据,千万不要使用普通for循环。说明:RandomAccess只是一个标识接口,里面没有具体需要实现的方法;实现RandomAcces...原创 2020-05-05 09:48:44 · 196 阅读 · 0 评论 -
Java 中只有值传递
对于基本类型来说,传递的是内容的拷贝,方法中对方法参数的改变不会影响到方法调用时传递的参数变量。对于引用类型来说,实际上也是值传递的方式,但传递的是对象的地址。...原创 2020-05-03 13:18:37 · 47 阅读 · 0 评论 -
java中为什么重写 equals 时必须重写 hashCode 方法
两个原因:为了提高效率,两个对象的比较首先比较hashCode是否相等,若不相等则对象不相等;若相等则继续调用equals方法比较。这样不必每次比较都要调用equals方法,提高效率。为了保证使用equals方法比较相等的情况下hashCode也相等,不会出现equals相等,而hashCode不相等的情况。...原创 2020-05-03 13:00:13 · 91 阅读 · 0 评论 -
java接口和抽象类的区别
接口的方法默认是public,jdk1.8开始接口的方法 可以有默认实现。抽象类可以有非抽象的方法。接口中成员变量必须是public static final修饰;而抽象类中则不一定。原因:接口是规范,所以应该是public公用的;而接口可以多继承,使用statis是为了保证接口不会声明相同的变量,但是继承接口的类不知道使用哪个接口的变量;final是保证接口中变量不可修改,因为接口是...原创 2020-05-03 12:04:12 · 64 阅读 · 0 评论 -
java中Object类的所有方法
getClass()获取对象的运行时类型toString()返回一个String对象,用来标识对象本身,一般需要重写clone()浅拷贝,复制出来的引用类型变量和被复制对象的变量指向同一个对象,即复制的是对象的地址。finalize()垃圾回首之前会执行finalize()方法wait()notify()notifyAll()equals()hashCode()...原创 2020-05-03 10:04:37 · 345 阅读 · 0 评论 -
原码、反码和补码互相转换
负数原码与反码互相转换:符号位不变,其余位置取反;负数原码与补码相互转换:符号位不变,其余位置取反加1;负数反码与补码相互转换:反码转补码:符号位不变,其余位置+1;补码转反码:符号位不变,其余位置-1;机器中数字以补码的形式存储,补码比原码和反码能多表示一位,比如32位int的值域为[-2147483648,2147483647]。机器中求相反数的方式为:补码包括符号位在内按位取...原创 2020-04-30 14:37:38 · 313 阅读 · 0 评论 -
java中获取数组最大(最小)值的三种方式
三种方式先排序,后取最大最小值Collections.min()和Collections.max()方法Arrays.stream(arr).min().getAsInt()和Arrays.stream(arr).max().getAsInt()代码如下: int[] arr = { 8, 2, 7, 1, 4, 9, 5}; int len = arr...原创 2020-04-19 16:00:13 · 8797 阅读 · 0 评论 -
基本类型数组与包装类型List相互转换
话不多说,直接上代码: //基本类型数组转化成包装类型List int[] a = {1,2,3}; List<Integer> list = Arrays.stream(a).boxed().collect(Collectors.toList()); System.out.println(list); //包装类型List转换成基本类型数组 ...原创 2020-04-17 17:24:18 · 1638 阅读 · 0 评论 -
java 声明数组的两种方式
指定长度:int[] arr = new int[3]直接初始化:int[] arr = {1,2,3}原创 2020-04-17 15:14:14 · 512 阅读 · 0 评论 -
List和数组相互转换
List和数组相互转换数组转换成List(三种方式):Arrays.toList(T… a)ArrayList list1 = new ArrayList<>(Arrays.asList(T… a));Collections.addAll(Collection<? super T> c, T… elements) Integer[] array={...原创 2020-04-17 14:35:46 · 333 阅读 · 0 评论