![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础知识
白衣如雪徐凤年x
软件工程专业在读生
展开
-
Java内部类举例浅析
前言内部类即为定义在一个类内部的类,它的基本特点是可以访问外部内的数据。内部类主要有以下几种形式:内部类静态内部类局部内部类匿名内部类内部类这里指的内部类是定义在类内部但不是在类方法中的类,如:class Outer{ private int a; public class Inner{ private int i=a; }}从上例中我们看到,内部类Inner可以访问外部类Outer的字段a,那么这种机制是如何实现的呢?原来,编译器会为内部类增加一个字段,用来存储外原创 2020-06-14 18:45:08 · 211 阅读 · 0 评论 -
由浅入深学习lambda表达式
前言lambda表达式采用的是一种简洁的语法,来传递代码块。使得java能够支持函数式编程。问题引入我们先来看一个简单的java API:Arrays.sort(T[] a, Comparator<? super T> c)其中,a是待排序数组,c是一个实现了Comparator接口的比较器对象。在没有lambda表达式之前,我们需要自己创建一个类并实现Comparator接口的compare方法,并在调用Arrays.sort时传入我们所创建的这个比较器的对象。如:class原创 2020-06-13 20:29:37 · 284 阅读 · 0 评论 -
java深浅克隆详解以及奇怪的标记接口——Cloneable
深克隆与浅克隆一个对象的浅克隆是指,创建一个新对象,这个对象拥有原对象所有字段的一个副本。这样的浅克隆往往会造成一些问题。比如,当一个对象的某个字段,是另外一个可变对象的引用时,浅克隆仅仅为克隆对象复制了该子对象的引用,也就是说,克隆对象与原对象共享这个子对象。如上图所示,初始对象origin和克隆对象copy的hireDay字段指向同一个Date对象。而对于深拷贝而言,要求一并深拷贝所有引用类型的字段,确保克隆对象和原对象不共享任何字段。这个过程可能是递归的,因为子对象也有可能拥有引用类型的字段。原创 2020-06-12 23:34:45 · 945 阅读 · 1 评论 -
java反射的基本用法
能够分析类能力的程序称为反射,反射机制可以用来:在运行时分析类实现像C++中的函数指针功能在程序运行期间,java运行时系统为每一个类型(对象,基本类型,甚至是void)提供一个特殊的java类来保存这些类型的各种信息,这个类叫做Class反射机制便是基于这个特殊的类——Class获取一个类型的Class对象的方式有以下三种:除基本类型和void外,所有类型均继承自Object类,该类提供了一个getClass方法,该方法将返回一个Class类型的实例在Class类中,有一个静态方法fo原创 2020-06-11 15:18:19 · 181 阅读 · 1 评论 -
java字符串详解——码点与代码单元
从概念上讲,java字符串就是Unicode字符序列。例如字符串"java\u2122"由5个Unicode字符j,a,v,a和™组成。java没有内置的字符串类型,而是在标准java类库中提供了一个预定义类,叫做String。每个由""括起来的字符串都是String类的实例。拼接字符串java允许使用+号拼接两个字符串,当一个字符串和一个非字符串进行拼接市,后者会转换为字符串,如果后者是对象,则会调用它的toString方法,这种情况常出现在打印语句中如需要将多个字符串以特定分隔符连接起来,可使用原创 2020-06-07 19:16:39 · 734 阅读 · 1 评论 -
java自动装拆箱易于忽视的细节
在java中,除去基本类型外,所有的类型都是对象,包括对象数组以及基本类型数组。在某些情况下,我们需要将基本类型转化为对象。java为基本类型提供了包装器类:Integer、Long、Float、Short、Double、Byte、Character、Boolean。自动装箱:编译器自动将基本类型转化为其对应的包装类自动拆箱:编译器自动将包装类转化为其对应的基本类型自动装拆箱的操作是由编译器而非虚拟机完成的通常情况下:Integer a=1000;Integer b=1000;if(a==b原创 2020-06-10 20:10:06 · 169 阅读 · 1 评论 -
java权限修饰符( protected ):什么叫对包和子类可见
protected修饰符的官方解释是:对本包,以及所有子类可见这读起来不免让人疑惑。经过我的验证,可以如此理解:对本包可见:所有调用protected成员(字段或方法)的地方,只要是和定义该成员的类处于同一个包类,均是正确的示例1:package p1;public class Father { protected void f(){ System.out.println("f方法执行了"); }}package p1;public class Mai原创 2020-06-10 12:25:56 · 2796 阅读 · 3 评论 -
java的基本数据类型详解
整型类型大小取值范围int4字节[-2^31, 2^31-1]short2字节[-32 768 ,32 767]long8字节[-9 223 372 036 854 775, 9 223 372 036 854 775 807]byte1字节[-128,127]与c++/c程序不同的是,java的整型大小与运行java的机器无关,此外,java也没有任何无符号形式的int、long、short、或byte类型浮点类型类型大小取值原创 2020-06-07 14:33:32 · 194 阅读 · 1 评论