java基础知识
littleAsuna
BUPT在读学生
展开
-
面向对象6大原则
文章目录1、单一职责原则——SRP2、开闭原则——OCP3.里氏替换原则4.依赖倒置原则5.接口隔离原则6.迪米特原则 - 最小知识原则1、单一职责原则——SRP单一职责原则的定义是就一个类而言,应该仅有一个引起他变化的原因。也就是说一个类应该只负责一件事情。如果一个类负责了方法M1,方法M2两个不同的事情,当M1方法发生变化的时候,我们需要修改这个类的M1方法,但是这个时候就有可能导致M2...原创 2019-05-26 19:19:21 · 244 阅读 · 0 评论 -
switch
从Java 7开始,key在switch条件判断语句中使用String对象。switch 不支持 long,是因为 switch 的设计初衷是对那些只有少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。支持的六种数据类型byteshortcharintEnmu枚举String(Java 7之后才支持)...原创 2019-05-26 21:39:12 · 192 阅读 · 0 评论 -
jdk8,jdk10,jdk12新特性
jdk8:1.Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法2. Lambda 表达式:(例如: (x, y) -> { return x + y; } ;λ表达式有三部分组成:参数列表,箭头(->),以及一个表达式或语句块。)3. hashmap和currenthashmap的红黑树以及casjdk10:1....原创 2019-05-26 21:58:28 · 5718 阅读 · 0 评论 -
基本数据类型,修饰符,引用传递与值传递
基本数据类型修饰符数据类型传递方式原创 2019-05-26 22:14:51 · 199 阅读 · 0 评论 -
Java对象向上转型和向下转型
1、对象向上转型2、对象向下转型3.隐式转型![在这里插入图片描述](https://img-blog.csdnimg.cn/20190320195412241.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1X...原创 2019-05-27 09:49:11 · 1728 阅读 · 1 评论 -
Java复制-浅拷贝与深拷贝
将一个对象的引用复制给另外一个对象,一共有三种方式。第一种方式是直接赋值,第二种方式是浅拷贝,第三种是深拷贝。1、直接赋值复制2、浅拷贝拷贝对象和原始对象的引用类型引用同一个对象。3、深拷贝拷贝对象和原始对象的引用类型引用不同对象。...原创 2019-05-27 10:09:41 · 247 阅读 · 0 评论 -
封装、继承、多态
封装:封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。把描述一个对象的属性和行为封装成一个类,把具体的业务逻辑功能实现封装成一个方法,其次封装的意义还有效的保护属性,通过访问修饰符私有化属性(成员变量),公有化方法。继承:继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。所...原创 2019-05-27 10:47:44 · 132 阅读 · 0 评论 -
泛型
1、泛型的定义及为什么要使用泛型泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。引入泛型的原因:可以增强代码的复用性,当然这种限定死类型的方式也会使得代码的安全性和可读性更高。2、定义一个简单的泛型类泛型类型和普通类型的区别主要在于:类名之后多了个,并且实例域类型可以不是具体的类型而是不确定的T...原创 2019-05-27 11:11:07 · 2789 阅读 · 0 评论 -
反射的用途与实现
文章目录基础补充一、基本类型二、String不可变的好处1、可以缓存hash值2、String Pool的需要3、安全性4、线程安全String Poolnew String(”abc“)三、运算参数传递float 与 double隐式类型转换switch四、继承访问权限抽象类与接口1、抽象类2、接口3、比较4、使用选择Super五、Object通用方法等价于相等hashCode()Clone()...原创 2019-05-27 11:24:06 · 844 阅读 · 0 评论 -
异常
1、异常的分类在Java中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。Throwable:有两个重要的子类:Exception (异常)和Error (错误),二者都是Java异常处理的重要子类,各自都包含大量子类。Error (错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时jVM (Jav...原创 2019-05-27 15:45:21 · 125 阅读 · 0 评论 -
NIO和BIO
讲讲NIO传统的IO流是阻塞式的,会一直监听一个ServerSocket,在调用 read等方法时,他一直等到数据到来或者缓冲区已满时才返回,调用accept也是一直阻塞到有客户端连接才会返回,每个客户端接过来后,服务端都会启动一个线程去处理该客户端的请求。并且多线程处理多个连接,每个线程拥有自己的栈空间并且占用一些CPU时间,每个线程遇到外部未准备好的时候,都会阻塞掉。阻塞的结果就是会芾来大量...原创 2019-05-27 17:00:15 · 145 阅读 · 0 评论 -
&和&&的区别 i++是否线程安全
1、&和&&的区别&的用法第一个是作为逻辑运算符使用,被当成逻辑运算符时有一个非短路的特性,即当第一个操作数为false时,那么第二个操作数仍然执行。第二个操作是作为位运算使用&&用法只有一个用法,只能作为逻辑运算符使用,在使用时有短路的特性,即当第一个操作数为false时,第二个操作数不会执行2、i++是否线程安全i++的线程...原创 2019-05-26 21:37:59 · 272 阅读 · 0 评论 -
static、final、finally,finaize,abstract修饰符
static修饰变量(静态变量):类变量,是该类的所有实例对象所共享的,在内存中只有一份修饰方法(静态方法):在类加载的时候就存在了,不依赖于实例,静态方法不能是抽象的,静态方法中不能有this,super等,因为this和super依赖于实例对象,而静态方法不和任何实例绑定。静态语句块:在类加载的初始化时候执行一次静态内部类:非静态内部类依赖于外部类的实例,而静态内部类不需要。静态内部...原创 2019-05-26 21:25:22 · 431 阅读 · 0 评论 -
String
文章目录String,StringBuilder,StringBuffer可变性线程安全性性能对于3者使用的总结String的实现String不可变的好处1.可以缓存hash值StringPool的需要3、安全性4、线程安全String Poolnew String(”abc“)String的APIString,StringBuilder,StringBuffer可变性简单来说,String...原创 2019-05-26 19:50:18 · 135 阅读 · 0 评论 -
抽象类和接口
抽象类与接口1、抽象类抽象类和抽象方法都使用 abstract 关键字进行声明。抽象类一般会包含抽象方法(也可以不包含,但是有抽像方法的类一定是抽象类),抽象方法一定位于抽象类中。抽象类和普通类最大的区别是,抽象类不能被实例化,需要继承抽象类才能实例化其子类。2、接口接口是抽象类的延伸,在 Java 8 之前,它可以看成是一个完全抽象的类,也就是说它不能有任何的方法实现。从 Java ...原创 2019-05-26 20:00:56 · 206 阅读 · 1 评论 -
Object通用方法
文章目录equals,hashcode,==equals()实现hashCode()的实现equals和==的区别equals()和hashCode()Clone()1、cloneable2、浅拷贝3、深拷贝4、clone()的替代方案toString()其他方法equals,hashcode,==equals()实现检查是否同一个对象的引用,如果是直接返回true(默认方法)检查是否是...原创 2019-05-26 20:15:28 · 461 阅读 · 0 评论 -
重载与重写
重载:在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。总结:(1)重载只看方法名和参数列表;(2)重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。重写/覆盖(Override)子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的...原创 2019-05-26 20:18:01 · 117 阅读 · 0 评论 -
Annotation注解
注解Annotation通过使用Annotation,可以在不改变原有逻辑的情况下,嵌入一些补充的信息。Annotation只有成员变量,没有方法,成员变量以无参的方法来定义,方法名为成员变量名,方法的返回值为成员变量的类型。java.lang.annotation.Annotation接口:这个接口是所有Annotation类型的父接口。根据是否包含成员变量可将 分为两类:标记Anno...原创 2019-05-26 20:20:55 · 2256 阅读 · 0 评论 -
内部类
1、静态内部类1、静态内部类可以访问外部类所有的静态变量和方法,即使是 private 的也一样;2、创建实例:其它类使用静态内部类需要使用“外部类.静态内部类”方式,如下所示:3、编译:编译器将Out这个类编译成两个独立的class源文件。对于Out中所有的私有成员(也就是内部类分离出去之后不能访问的成员),增设了可供调用的access$xxx方法,从而实现内部类与外部类之间的联系;4...原创 2019-05-26 20:27:38 · 112 阅读 · 0 评论 -
int和Integer的区别、包装类、基本类型和字符串之间的转换
1、int和Integer的区别1、Integer是int的包装类,int则是java的一种基本数据类型;2、Integer变量必须实例化后才能使用,而int变量不需要;3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象,而int则是直接存储数据值;4.int是java提供的8种基本数据类型之一,默认值为0,Integer默认值为null,In...原创 2019-05-26 20:42:08 · 641 阅读 · 0 评论 -
Comparable和Comparator
Comparable和Comparator区别1、Comparable是内部比较器,仅针对某个类进行比较,和具体类绑定,而Comparator是外部比较器,适用于多种类,只需要建立这些类的比较器即可。2、另外,Comparator实际上是一种策略模式,比如TreeMap / TreeSet中持有Comparator接口的引用Comparator comparator,通过TreeMap(排序类...原创 2019-05-26 20:43:43 · 119 阅读 · 0 评论 -
Java与C++的区别、类与对象
Java与C++的区别1.Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C,既支持面向对象也支持面向过程。2.Java 通过虚拟机从而实现跨平台特性,但是 C++ 依赖于特定的平台。3.Java 没有指针,它的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。4.Java 支持自动垃圾回收,而 C++ 需要手动回收。5....原创 2019-05-26 20:45:54 · 1220 阅读 · 0 评论 -
Java IO流的分类
输入流和输出流是相对于程序来说的,数据通过输入流从源设备到程序,通过输出流从程序到目标设备,从而实现数据的传输。分类:字节流、字符流、转换流字节流###字节输入流:InputStream(抽象类)几个主要方法:int read() 抽象方法。从输入流读取一个8位的字节,把它转换成0~255之间的整数,并返回这一整数int read(byte[] b) 从输入流读取若干字节,把它们保...原创 2019-05-26 20:57:36 · 692 阅读 · 0 评论 -
git commit 错误怎么办~
修复了我错误commit的问题,转载记录一下~划重点,使用git reset –hard(此参数有毒)之前一定要git commit 或者 git add 或者 git stash或者。。。假如你这些操作都没有执行的话,博主还有一个找了多年的方法能挽救。。。那是一个风雨交加的夜晚,博主头顶十米长的避雷针,一声惊雷下来,哇咔咔!博主穿越到还没rest之前的时空!!哈哈哈哈天无绝人之路啊!!!...转载 2019-06-21 15:01:06 · 8621 阅读 · 1 评论