![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 68
奔跑的废柴
卧久者行必远,伏久者飞必高
展开
-
Java的IO流示例代码(输入流输出流字节流字符流文件流缓冲流)
缓冲流(包装流、处理流):BufferedWriter,BufferedReader,BufferedOutputStream,BufferedInputStream。文件流:FileOutputStream,FileInputStream,FileWriter,FileReader。以Stream结尾的都是字节流(byte[]),以Reader/Writer结尾的都是字符流。缓冲流只需要close最外层,读取时不需要定义char或byte数组,自带缓冲。本篇代码没有涉及到的其他流如下,感兴趣的自行了解。原创 2023-02-13 20:47:42 · 545 阅读 · 1 评论 -
Java三大特性:封装继承多态
封装封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。好处:• 将变化隔离。• 便于使用。• 提高重用性。• 提高安全性。封装原则:• 将不需要对外提供的内容都隐藏起来。• 把属性都隐藏,提供公共方法对其访问 。继承继承是面向对象最显著的一个特性。 继承是从已有的类中派生出新的类, 新的类能吸收已有类的数据属性和行为,并能扩展新的能力。在JAVA中, 被继承的类叫父类(parent class)或超类(superclass), 继承父类的类叫子类(subclass)或派生类原创 2021-08-15 15:23:25 · 171 阅读 · 0 评论 -
【NIO第二篇】Java NIO(New IO /Non Blocking IO)
文章目录字符集CharsetNIO非阻塞式网络通信选择器的作用可以换成非阻塞模式的通道NIO阻塞式网络通信字符集Charset编码:字符串->字节数组解码:字节数组->字符串NIO非阻塞式网络通信使用NIO完成网络通信的核心:通道(负责连接)、缓冲区(负责存取)、选择器(负责监控)选择器的作用选择器:监控通道的IO状况。通道都会注册到选择器上。客户端发送给服务端的数据完全准备就绪以后,选择器才将任务分配到服务端的一个或多个线程上,再运行。选择器是SelectableChan原创 2021-03-11 12:54:31 · 191 阅读 · 0 评论 -
【NIO第一篇】Java NIO(New IO /Non Blocking IO)
哎,面试问到过,不知道本篇博客参考:尚硅谷文章目录NIO与IO的区别缓冲区的数据存储类型存取数据缓冲区的四个核心属性示例NIO直接缓冲区与非直接缓冲区非直接缓冲区直接缓冲区NIO通道的原理与获取通道Channel前言:DMA优化:通道通道的主要实现类获取通道1.getChannel()2. NIO.2(jdk1.7后)3. NIO.2的Files工具类的newByteChannel()方法示例:利用通道完成文件复制NIO与IO的区别传统的IO是单向的(输入/输出)NIO:通道连接不同节.原创 2021-03-10 17:19:59 · 125 阅读 · 0 评论 -
Java枚举enum
什么是枚举Java 枚举是一个特殊的类,一般表示一组常量。public enum Direction { FRONT, BEHIND, LEFT, RIGHT;}Direction d = Direction.FRONT;枚举类可以有什么枚举跟普通类一样可以用自己的变量、方法和构造函数构造函数构造函数只能使用 private 访问修饰符,所以外部无法调用。enum Direction { FRONT, BEHIND, LEFT, RIGHT;//[在枚举常量后面必须添加分原创 2021-02-21 17:12:13 · 163 阅读 · 0 评论 -
JAVA中的 IO
流的分类流是一组有顺序的、单向的,有起点和终点的数据集合,就像水流。字节流和字符流流分为字节流和字符流。1.字节流:数据单元是一个8位,数据流中最小的数据单元是字节。InputStream 是所有的输入字节流的父类,它是一个抽象类。有三个参数不同的read()方法。OutputStream 是所有的输出字节流的父类,它是一个抽象类。有三个参数不同的write()方法。2.字符流:数据单元是一个16位,数据流中最小的数据单元是字符。Java中的字符是Unicode编码,一个字符占2个字节。节.原创 2021-02-20 22:03:53 · 276 阅读 · 0 评论 -
Java IO小例子
1.控制台读写public class IO1 { public static void main(String args[]) throws IOException { String c; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); do{ c=(String)br.readLine(); System原创 2020-12-25 16:20:29 · 108 阅读 · 0 评论 -
Java单例模式代码实现
双检查锁机制(Double Check Locking)实现在声明变量时使用了 volatile 关键字来保证其线程间的可见性;在同步代码块中使用二次检查,以保证其不被重复实例化同时在调用getInstance()方法时不进行同步锁,效率高。这种实现方式既保证了其高效性,也保证了其线程安全性。public class Singleton { public volatile static Singleton instance=null;//volatile保证变量可见性 private原创 2020-12-25 08:58:45 · 401 阅读 · 1 评论 -
Java对象初始化过程
1.父类 Father类代码public class Father { public static int age=0; public Father(int age){ System.out.println("before construct:father age:"+this.age); this.age=age; System.out.println("after construct:father age:"+this.age);原创 2020-12-24 09:55:41 · 161 阅读 · 0 评论 -
Java中的final修饰变量、方法、类
1.变量1.如果引用为基本数据类型,则该引用为常量,该值无法修改;2.如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。3.如果引用时类的成员变量,则必须当场赋值,否则编译会报错。2.方法当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。3.类该类成为最终类,无法被继承。...原创 2020-12-18 14:06:03 · 194 阅读 · 0 评论 -
Java中的内部类:成员内部类、局部内部类、匿名内部类、静态内部类
参考:https://www.cnblogs.com/dolphin0520/p/3811445.html1.成员内部类创建创建成员内部类对象的一般形式为: 外部类类名.内部类类名 xxx = 外部类对象名.new 内部类类名()位置成员内部类是最普通的内部类,它定义在一个类的内部结构可以定义非静态属性和方法。不可以定义static修饰的属性和方法。但可以定义static final修饰的编译期变量。首先要先知道sttaic final修饰的变量叫做常量,常量分为编译期常量和非编译期原创 2020-12-16 13:22:22 · 161 阅读 · 0 评论 -
Java中的迭代器Iterator/Iterable接口
1.为什么需要迭代器因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作更为简单,Java引入了迭代器模式。迭代器总是用同一种逻辑来遍历集合。把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。户端自身不需要来维护集合的内部结构,所有的内部状态都由Iterator来维护。客户端不用直接和集合进行打交道,而是控制Iterator向它发送向前向后的指令,就可以遍历集合。2.java.util.Iterator3.Iterable接口原创 2020-12-15 15:56:27 · 201 阅读 · 0 评论 -
Java面试题1
1问题:ArrayList和LinkedList的区别原创 2020-11-29 10:15:17 · 215 阅读 · 0 评论 -
Java集合框架
https://www.cnblogs.com/bingyimeiling/p/10255037.html原创 2020-11-22 20:51:38 · 91 阅读 · 0 评论 -
Java中hashCode()和equals()
如果重写equals()方法必须要重写hashCode()方法源码中,Object类默认的equals比较规则就是比较两个对象的内存地址。实际上,hashcode是根据对象的内存地址经哈希算法得来的。(而hashcode是本地方法,java的内存是安全的,因此无法根据散列码得到对象的内存地址)要注意的:1.尽量保证使用对象的同一个属性来生成hashCode()和equals()两个方法。在我们的案例中,我们使用员2.工id。3.eqauls方法必须保证一致(如果对象没有被修改,equals应该返回相原创 2020-11-14 20:07:26 · 176 阅读 · 0 评论 -
Java中的静态代理和动态代理
1.静态代理介绍优势:可以隐藏委托类的具体实现,可以在不改变委托类的情况下增加额外的操作。不足:静态代理实现了目标对象的所有方法,一旦目标接口增加方法,代理对象和目标对象都要进行相应的修改,增加维护成本。代码public interface AdminService { void update(); Object find();}public class AdminServiceImpl implements AdminService{ public void upd原创 2020-11-14 19:26:18 · 97 阅读 · 0 评论 -
Java手写简易版ArrayList
代码public class MyArrayList { private static final int DEFAULT_CAPACITY=10; private int capacity; private int size; private int[] elements; public MyArrayList(int capacity){ this.size=0; this.capacity=capacity; e原创 2020-11-14 18:28:45 · 172 阅读 · 0 评论 -
Java手写简易版HashMap
接口public interface Map<K,V> { V put(K k,V v); V get(K k); int size(); interface Entry<K,V>{ K getKey(); V getValue(); }}HashMappublic class HashMap<K,V> implements Map<K,V> { private Entr原创 2020-11-12 11:14:51 · 309 阅读 · 1 评论 -
Java中的异常
1.Java中的异常层次结构Error:Java运行时系统的内部错误和资源耗尽错误。应用程序不应该抛出这种类型的对象。如果出现了这样的错误,除了通告给用户,并尽力使程序安全终止之外,再也无能为力了,这种情况很少出现。2....原创 2020-11-14 15:32:20 · 87 阅读 · 0 评论 -
Java中线程安全的集合ConcurrentHashMap
相关文章:HashMap介绍:一篇解决Java面试中所有HashMap问题【Java并发编程的艺术】Java并发容器和框架:ConcurrentHashMap1.其他HashMap的替代1.1 Collections.synchronizedMap(Map)创建线程安全的map集合创建出synchronizedMap之后,再操作map的时候,就会对方法上锁,如图全是1.2 Hashtable...原创 2020-11-13 15:35:23 · 217 阅读 · 0 评论 -
一篇解决Java面试中所有HashMap问题
1.不同版本JDK中HashMap的变化1.新的节点插入链表。JDK8之前是头插法,后来是尾插法。2.如果同一个格子里的key不超过8个,使用链表结构存储。如果超过了8个,那么会调用treeifyBin函数,将链表转换为红黑树。那么即使hashcode完全相同,由于红黑树的特点,查找某个特定元素,也只需要O(log n)的开销,也就是说put/get的操作的时间复杂度最差只有O(log n)3.在JDK1.7的时候是先进行扩容后进行插入,而在JDK1.8的时候则是先插入后进行扩容4.JDK1..原创 2020-11-13 14:38:29 · 772 阅读 · 2 评论 -
Java中的反射
反射获取类的信息1.x.getClass() String a = ""; Class c = a.getClass(); System.out.println(c.getName()); /* 输出: java.lang.String */2.Class.forName(x) String a = ""; Class c = null; try { c = Class.forName(a); System.out.println原创 2020-11-12 17:50:16 · 190 阅读 · 1 评论 -
Java中的深拷贝和浅拷贝
1.出现的原因Java 中的数据类型分为基本数据类型和引用数据类型。对于这两种数据类型,在进行赋值操作、用作方法参数或返回值时,会有值传递和引用(地址)传递的差别。2.浅拷贝2.1 介绍浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 。因此如果其中一个对象改变了这个地址的值,就会影响到另一个对象。即默认拷贝构造函数只是对对象进行浅拷贝复制(逐个成员依次拷贝),即只原创 2020-11-12 16:47:26 · 86 阅读 · 0 评论 -
Java中接口和抽象类的区别和共同点
1.区别1.1 目的接口:接口的目的,是对类的行为具有约束,更像是一个标准。要求类实现方法的有无,而不要求怎么实现。提供一种机制,强制让不同的类有相同的行为。/*U盘和打印机都可以插在电脑上使用,因为他们都实现了USB标准的接口 */interface USB{ // 定义了USB接口 public void start() ; // USB设备开始工作 public void stop() ; // USB设备结束工作}class Computer原创 2020-11-12 16:00:42 · 303 阅读 · 0 评论