![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
景谦Nice
这个作者很懒,什么都没留下…
展开
-
【Java】第四十三节 TCP与UDP的区别
套接字Socket: TCP通信与UDP通信需要用到Socket:为了方便开发网络应用程序,美国伯克利大学在Unix上实现的一种应用程序访问网络的通信协议Socket,Socket的出现使程序员可以很方便的访问TCP/IP。 使用TCP进行通信: 服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端到端口的连接请求。 package server; import java....原创 2020-03-06 13:03:21 · 1442 阅读 · 0 评论 -
【Java】第四十二节 线程池
一、为什么要用线程池 1、提高程序的执行效率 如果程序中有大量短时间任务的线程任务,由于创建和销毁线程需要和底层操作系统交互,大量时间都耗费在创建和销毁线程上,因而比较浪费时间,系统效率很低;线程池里的每一个线程任务结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用,因而借助线程池可以提高程序的执行效率。 2、控制线程的数量,防止程序崩溃 如果不加限制地创建和启动线程很容易...原创 2020-03-06 12:18:59 · 149 阅读 · 0 评论 -
【Java】第四十一节 NIO之Buffer和Channel
NIO(New IO)概念: JDK1.4版本开始,JDK提供了新的IO操作API, NIO提供多路(non-blocking) 非阻塞式的高伸缩性网络I/O,从而提高了效率,NIO主要有三大核心组件:Channel、Buffer和Selector(此处仅介绍前两种) 一:Buffer之ByteBuffer Buffer是一个抽象类,Buffer类型变量对应的对象代表一块缓冲区,ByteBuffe...原创 2020-03-03 13:14:03 · 185 阅读 · 0 评论 -
【Java】详述ThreadLocal
在多线程环境下,每个线程都有自己的数据。一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程。 ThreadLocal能够放一个线程级别的变量,其本身能够被多个线程共享使用,并且又能够达到线程安全的目的。说白了,ThreadLocal就是想在多线程环境下去保证成员变量的安全,常用的方法,就是get/set/initialValue方法。 ThreadLoca...原创 2020-02-25 23:10:43 · 139 阅读 · 0 评论 -
【Java】第四十节 IO流之对象流
对象序列化机制: 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。当其它程序获取了这种二进制流,就可以恢复成原来的Java对象。 对象序列化的条件: 1、实现Serializable; 2、定义全局常量private static final long serialVersionUID; 3、...原创 2020-01-15 20:44:23 · 210 阅读 · 0 评论 -
【Java】第三十九节 IO流之转换流
转换流: 转换流提供了在字节流和字符流之间的转换,用于将字节流的读入转换为字符流的读入,将字符流的写出转换为字节流的写出,包括InputStreamReader和OutputStreamWriter,其中: InputStreamReader:将InputStream转换为Reader,它有两类构造方法: public InputStreamReader(InputStream in) :使用...原创 2020-01-15 16:42:22 · 131 阅读 · 0 评论 -
【Java】第三十八节 IO流之缓冲流
缓冲流 为了提高数据读写的速度,Java API提供了带缓冲功能的缓冲流,在使用这些流类时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。 缓冲流属于处理流,用来操作节点流,缓冲流有:BufferedReader和BufferedWriter、BufferedInputStream和BufferedOutputStream 缓冲流的常用方法与节点流类似; 向流中写入字节时,...原创 2020-01-15 16:15:50 · 115 阅读 · 0 评论 -
【Java】第三十七节 IO流之节点流
节点流,或称文件流,是指直接连接程序与本地文件/网络数据的流,用于在程序直接操作数据。节点流包括:FileReader、FileWriter、FileInputStream和FileOutputStream。 FileReader和FileWriter: FileReader的常用方法: 1、int read():返回的是字符对应的int类型的ASCII码,要在控制台打印的话强制转换为char,如...原创 2020-01-15 15:04:36 · 215 阅读 · 0 评论 -
【Java】第三十六节 IO流概述
I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于 处理设备之间的数据传输。对于Java开发来说,我们是站在程序方面的,所以Java中的Input是指从网络/本地文件读取到程序中,而Output则是从程序写入到本地文件或上传网络中。 流的分类: 1、根据流的单位分:字节流、字符流; 2、根据流的流向分:输出流、输入流; 3、根据流的角色分:节点流、处理流。 流的对应关系: ...原创 2020-01-15 14:20:54 · 130 阅读 · 0 评论 -
【Java】第三十五节 File类总结
File类用于文件\文件夹的各种操作:创建、删除、修改名称、查看各种信息、各种判断等 File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。 如果需要访问文件内容本身,则需要使用输入/输出流。 File类的三个构造方法: public File(String pathname) public File(String parent,String child) public ...原创 2020-01-15 14:02:21 · 142 阅读 · 0 评论 -
【Java】第三十四节 线程通信
涉及到的方法: 1、wait():一旦执行次方法,当前线程就会处于阻塞状态,并自动释放同步监视器; 2、notify():唤醒执行了wait()的线程,如果有多个线程执行了wait()方法,则优先唤醒优先级高的线程,如果优先级相同,则随即唤醒一个; 3、notifyAll():唤醒所有执行了wait()的线程。 说明: 1、wait()、notify()、notifyAll()三个方法必须使用在同...原创 2020-01-10 22:28:24 · 89 阅读 · 0 评论 -
【Java】第三十三节 解决线程安全性问题的三种方法
以上一节中多窗口卖票出现的问题来说明同步机制 方式一:同步代码块 synchronized(同步监视器){ //需要被同步的代码 } 1、操作共享数据(多个线程共同操作的变量)的代码需要被同步; 2、同步监视器,俗称锁。任何一个类的实例化对象都可以充当同步监视器,但是要保证处理共享数据的线程要共用一个同步监视器。因此: 如果是Thread类子类实例化方式创建的线程,同步监视器可以用该子类对应...原创 2020-01-10 20:01:30 · 199 阅读 · 0 评论 -
【Java】第三十二节 多线程
程序、进程与线程: 程序:为完成特定功能,用某种计算机语言编写的一组指令的集合; 进程:运行中的程序; 线程:进程中细分出来,用于完成程序众多功能中的某个功能的执行分支。 例:程序类似于没有开启的金山毒霸,打开后的金山毒霸类似一个进程,在金山毒霸里同时进行木马查杀、垃圾清理等操作相当于开启了多个线程。 多进程与多线程: 一个进程至少有一个线程,即主线程。 多进程:同时运行多个程序; 多线程:多个线...原创 2020-01-10 15:22:05 · 139 阅读 · 0 评论 -
【Java】第三十一节 元注解
@Target 用于说明被添加了该元注解的注解可以用在哪些地方,如果没加该元注解,则定义的这个注解可以用在任意合理位置,该元注解有一个属性“ElementType[] value();”,该属性有以下几个属性值: ElementType.ANNOTATION_TYPE:应用于其他注解的元注解 ElementType.CONSTRUCTOR:应用于构造函数 ElementType.FIELD:应用...原创 2020-01-08 12:33:06 · 77 阅读 · 0 评论 -
【Java】第三十节 反射机制操作构造方法、普通方法和属性
反射机制操作构造方法: 1、获取构造方法: getConstructor(): 只能获取public权限的构造方法,否则报错,有参数的话将参数类型写在括号里,通过括号内的参数类型与参数个数区分获取哪个构造方法,例: //Class实例clazz中的无参构造方法 Constructor constructor = clazz.getConstructor(); //Class实例clazz中的有参构...原创 2020-01-07 18:00:51 · 125 阅读 · 0 评论 -
【Java】第二十九节 反射:获取Class类实例化对象的方式
Class.forName(“包名.类名”) 测试类: package com.reflection.test; public class Demo { public static void main(String[] args) { try { //获得的是Student类对应的Class类实例 Class clazz = Class.forName("com.reflec...原创 2020-01-07 11:14:44 · 218 阅读 · 0 评论 -
【Java】第二十八节 泛型
泛型的引入 泛型:可以理解为广泛通用的类型 集合如果没有使用泛型如下例,会产生一些问题:集合中可以存任意类型的对象,如果将自定义类Dog和Person的实例化对象存进去,在进行比较或是类型转换问题上是不合逻辑的,在实际中人不能跟狗比较,也不能将狗转换为人;并且在程序中,传入的对象会上转型为Object,因此其自身的一些属性和方法将不能被调用List list = new ArrayList();...原创 2019-11-13 09:42:40 · 79 阅读 · 0 评论 -
【Java】第二十七节 包装类
包装类 对基本数据类型进行包装,把基本数据类型包装成一个对象,以面向对象的思想来使用这些类型 基本数据类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 装箱与拆箱操作 装箱操作:以...原创 2019-11-12 23:52:11 · 97 阅读 · 0 评论 -
【Java】第二十六节 详述HashSet add方法
分两种情况详述HashSet add方法的执行流程:存储String类型或者基本数据类型的包装类时;存储的是自定义数据类型时 论述判断两个对象是否重复的两个标准:hashCode()和equals()原创 2019-11-11 17:05:35 · 225 阅读 · 0 评论 -
【Java】第二十五节 hashMap遍历的四种方式
方法一:将Map集合中的key收集到Set集合,用foreach遍历 方法二:将Map集合中的key收集到Set集合,用iterator遍历 方法三:将Map集合中的每一个key-value转换成一个Entry对象并保存在Set集合中,用foreach遍历 方法四:将Map集合中的每一个key-value转换成一个Entry对象并保存在Set集合中,用iterator遍历 例:import ja...原创 2019-11-11 14:38:49 · 87 阅读 · 0 评论 -
【Java】第二十四节 详述ArrayList类remove方法和contains方法
remove&contains 以ArrayList为例,如果其中存的是基本数据类型的包装类或是String类,则remove()方法和contains()方法很容易实现。 例:以String类为例:public class Test { public static void main(String[] args) { ArrayList<String> list = ...原创 2019-11-08 09:30:33 · 184 阅读 · 0 评论 -
【Java】第二十三节 集合之方法
主要罗列List常用方法、LinkedList的新增方法、Set常用方法(以HashSet为例)、Map常用方法(以HashMap为例)原创 2019-11-07 17:40:59 · 113 阅读 · 0 评论 -
【Java】第二十二节 异常之throws/throw程序判读
异常之throws/throw程序判读 1.throw用在代码块中:如果直接在代码块中throw异常对象(正常人不这么干),那么不区分检查时异常还是运行时异常都要try/catch。如果在代码块中的if语句中throw异常对象,由于throws不能用在代码块,所以无法抛出异常,只能且必须try/catch;而如果是运行时异常,可以不try/catch,此时若出现异常则交由JVM处理。例:publ...原创 2019-11-07 16:00:08 · 139 阅读 · 0 评论 -
【Java】第二十一节 异常之throws/throw
throw、throws、以及它们的区别原创 2019-11-06 11:31:16 · 174 阅读 · 0 评论 -
【Java】第二十节 异常之try-catch-finally
异常:程序在运行时出现的错误成为异常,没有处理的异常会使程序立即结束 异常分为两类:Throwable – > Error、Exception Error是JDK的错误,不需要程序员处理 Exception需要程序员处理 Exception也分为两类:RuntimeException、非RuntimeException RuntimeException: 1、直接或间接继承Run...原创 2019-11-06 09:52:38 · 93 阅读 · 0 评论 -
【Java】第十九节 方法的重写
方法的重写 重写:子类继承父类时可以继承父类的方法,但有时父类的方法不足以描述子类的行为特征,因此需要对父类的方法进行改造以更加准确的描述子类的行为特征。这种对父类方法的改造就是方法的重写,又称方法的覆盖 可以在方法的上一行加@Override注解来判断该方法是否是重写父类的方法 子类重写父类的方法需要满足以下条件: 1.子类的与父类的方法名和参数列表相同 2.父类方法如果没有返回值或返回值是...原创 2019-11-06 09:01:37 · 83 阅读 · 0 评论 -
【Java】第十八节 Java语言this总结
Java语言this总结 this:this指代的是当前对象 一个类中可以用this关键字调用本类的构造方法,且要放在有效代码的第一行 哪一个类调用这个方法,这个方法中的this就代表哪一个对象 因为static方法是从属于类的,在加载类的时候还没有对象,因此静态方法里面不能使用this关键字 下例中的“new Student().doHomework();”与“this.doHomework(...原创 2019-11-04 18:01:57 · 83 阅读 · 0 评论 -
【Java】第十七节 冒泡法排序与插入法排序
冒泡法排序 冒泡法排序:通过循环遍历数组并调整两个相邻的数的位置来达到按照数值大小升序或降序排序的方法。例:int [] array = {5,4,3,2,1}; for(int j = 1; j < array.length; j ++) { for(int i = 0; i<array.length - j; i++) { if(array[i] > array[i+...原创 2019-11-04 11:06:20 · 111 阅读 · 0 评论 -
【Java】第十六节 值传递与引用传递
值传递 值传递:值传递是针对基本数据类型而言的,是指在调用函数时将实际参数复制 一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。例: public class Test1 { public static void main(String[] args) { int num = 321; System.out.println(num); //321 change...原创 2019-11-02 09:30:28 · 76 阅读 · 0 评论 -
【Java】第十四节 String类对象的创建
String类对象的两种创建方法及其比较 方法一:直接赋值,例:String str = "www.jpc.com"; 方法二:利用构造方法实例化,例:String str = new String("www.jpc.com"); 区别: 直接赋值的方法在执行后,String类对象会被加载到常量池中并将该对象的地址赋值给String类型的变量;如果再用这种方法创建String类对象,J...原创 2019-10-30 16:13:32 · 219 阅读 · 0 评论 -
【Java】第十三节 String类重写的equals方法
equals方法分析 例:判断两个字符串的内容是否相等public class StringDemo { public static void main(String[] args) { String str1 = "www.jpc.com"; String str2 = new String("www.jpc.com"); System.out.println(str1.equa...原创 2019-10-30 15:26:38 · 700 阅读 · 0 评论 -
【Java】第十二节 Lambda表达式
Lambda表达式 Java从JDK8开始支持Lambda 表达式,其语法格式为:([参数]...)->{代码块}; 作用:简化了函数式接口匿名内部类的语法,例:public class Outter { public static void main(String[] args) { IAnimal animal = new IAnimal() { @Override ...原创 2019-10-29 16:06:02 · 71 阅读 · 0 评论 -
【Java】第十一节 Java内部类
Java内部类 内部类:在类中定义的类,外面的类叫外部类,里面的类叫内部类 作用:为了更加精确的描述现实中的一类事物,例汽车内部的发动机类 根据有无static修饰可以分为静态内部类和非静态内部类: 非静态内部类对象的创建:内部类 内部类对象名 = 外部类对象名.new 内部类(); 静态内部类:静态内部类只能直接访问外部类的静态成员变量和方法,但是可以通过创建外部类的对象间接使用外部类的非...原创 2019-10-29 15:33:49 · 257 阅读 · 0 评论 -
【Java】第十节 instanceof运算符总结
instance运算符用于测试它左边的对象是否是它右边的类或其子类、接口实现类的实例,返回 boolean 的数据类型 格式:引用类型变量 instanceof (类、抽象类或接口)interface IAnimal { } class Biology{ } class Dog extends Biology implements IAnimal{ } public class Te...原创 2019-10-28 17:28:38 · 87 阅读 · 0 评论 -
【Java】第九节 抽象类与接口区别
构造方法: 抽象类有构造方法; 接口没有构造方法; 继承与实现: 抽象类的继承用extends关键字,接口的实现用implements关键字; 抽象类不支持多继承,但接口支持多继承,中间用逗号隔开; 一个类不能同时继承多个抽象类,但一个类可以同时实现多个接口; 命名方法:没有强制,但建议如下 抽象类遵从大驼峰命名法; 接口遵从以“I”开头的大驼峰命名法,以方便识别; abstr...原创 2019-10-28 16:14:58 · 84 阅读 · 0 评论 -
【Java】第八节 多态
Java引用变量有两种类型,分别是编译时类型和运行时类型:编译时类型由声明该变量时使用的类型决定;运行时类型由实际赋给该变量的对象。如果编译时类型和运行时类型不一致,就可能出现所谓多态。 如果子类没有重写父类的方法或者没有调用重写的方法,那么不会出现多态。 出现多态的条件有三个:继承、重写、调用 多态:多态是一种现象,描述的是父类类型的变量指向子类的实例化对象,在调用父类中被子类重写的方法时,在...原创 2019-10-28 11:06:07 · 83 阅读 · 0 评论 -
【Java】第七节 父类构造方法对子类构造方法的影响
如果父类拥有无参构造方法(不区分默认的和自定义的),那么子类中的没有自定义调用该子类其他构造方法和父类某个构造方法的构造方法将默认调用父类的无参构造方法,并且父类构造方法优先执行,例:class Person{ public Person() { System.out.println("Person父类构造方法执行了"); } } class Student extends Person...原创 2019-10-28 10:08:38 · 96 阅读 · 0 评论 -
【Java】第六节 对象初始化过程
用new创建对象并初始化对象步骤 通过一个实例来观察对象的初始化过程:class Student{ String name = "虎二"; String gender = "男"; int age = 19; double score = 66.5; { System.out.println("【声明并初始化后】" + "姓名:" + this.name + ",性别:" + th...原创 2019-10-26 16:00:18 · 169 阅读 · 0 评论 -
【Java】第五节 Java语言方法
方法 方法:方法是包含于类或对象中,解决一类问题或实现一定功能的代码块 方法的作用: 1.使程序变得更简短而清晰。 2.有利于程序维护。 3.可以提高程序开发的效率。 4.提高了代码的重用性。 方法的定义: 访问控制符 [修饰符] 返回值类型 方法名([参数类型 参数名]...){ ... 方法体 ... [return 返回值;] } 方法的调用: ...原创 2019-10-26 14:37:08 · 267 阅读 · 2 评论 -
【Java】第四节 逻辑运算符与位运算符
逻辑运算符与位运算符之或与非的比较 在逻辑运算符中,运算符两边都是布尔值(true/false),而在位运算符中,运算符两边只可以是整型(int、short、long)数据、字节型数据和字符型数据 逻辑运算返回值只能赋值给boolean类型的变量,而位运算返回值可以赋值给除boolean类型之外的其他基本数据类型的变量 逻辑运算符进行逻辑运算,而位运算符进行二进制位运算 或: 逻辑或:两边都是...原创 2019-10-25 18:44:53 · 97 阅读 · 0 评论