与Java初次约会
文章平均质量分 67
以实战演练为核心,沉浸式深入Java开发基础,仿佛初次约会一样,提高与代码的“约会”能力,帮助初学者高效提高开发能力。
空 白
仅仅是万千世界当中的一员,也没那么闪亮
展开
-
31.对象的序列化和反序列化
序列化和反序列化 把对象转换为字节序列的过程称为对象的序列化。----写对象的过程 把字节序列恢复为对象的过程称为对象的反序列化。----读对象的过程 步骤 创建一个类,集成Serializable接口 创建对象 将对象写入文件 从文件读取对象信息 使用到: 对象输入流:ObjectInputStream 对象输出流:ObjectOutputStream ObjectInputStream 构造方法 ObjectInputStream() 为完全重新实现ObjectInputStr原创 2021-07-02 19:53:37 · 124 阅读 · 0 评论 -
30.字符流,操作字符更方便
Reader BufferedReader缓冲区字符输入流 LineNumberReader提供了行号的具体的装饰器类 CharArrayReader字符数组输入流 StringReader字符串输入流(本质是字符串) InputStreamReader是字节转换为字符的桥梁,用于转换,它使指定的charset读取字节并将其解码为字符 FileReaderFileReader流是用于读取字符文件的便捷类。(FileReader类从InputStreamReader类继承而来) PipedRe原创 2021-07-02 11:55:34 · 122 阅读 · 2 评论 -
29. 缓冲流让数据操作飞起来了
缓冲流 缓冲流也称为处理流,对文件或者其他目标频繁的操作,效率低,性能差。缓冲流目的是提高程序读取和写出的性能。缓冲流也分为字节缓冲流和字符缓冲流。本次主要介绍字节缓冲流。 字符缓冲流 缓冲字符输入流 BufferedReader 缓冲字符输出流 BufferWriter 字节缓冲流 缓冲字节输入流BufferedInputStream 缓存字节输出流BufferOutputStream BufferedInputStream 构造方法 BufferedInputStream(InputStr原创 2021-07-01 19:04:46 · 100 阅读 · 0 评论 -
28. 学了字节流,对数据操作更深刻了
FileInputStream 从文件系统中的某个文件中获得输入字节----读 用于读取诸如图像数据之类的原始字节流(对于文档操作一般使用字符流) 构造方法 FileInputStream(File file) 通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。 FileInputStream(FileDescriptor fdObj) 创建 FileInputStream通过使用文件描述符 fdObj ,其表示在文件系统原创 2021-06-30 23:44:18 · 77 阅读 · 2 评论 -
27. Java的输入输出流的认识
输出流 输入流 例如: Scanner sc = new Scanner(System.in); 注意: 文件输入-----读 文件输出-----写 FIle类 什么是文件? 文件可认为是相关记录或放在一起的数据的集合 在Java中,使用java,io.File类对文件进行操作。 创建对象 File类创建对象有多种方式,在相对应的环境选择合适的方式,会事半功倍。 // 创建File对象 // 1. // File file1 = new File("D:\\FIleDemo\\2.t原创 2021-06-29 21:05:34 · 79 阅读 · 0 评论 -
26.线程间的通信
线程间通信 wait()方法:中断方法的执行,使线程等待 notify()方法:唤醒处于等待的某一个线程,使其他结束等待 notifyAll()方法:唤醒所有处于等待的线程,使它们结束等待原创 2021-06-28 21:51:49 · 1142 阅读 · 0 评论 -
25.多线程运行与同步
多线程 各个线程是通过竞争CPU时间而获得运行机会的 各线程什么时候得到CPU时间,占用多久,是不可测的 一个正在运行着的线程在什么地方暂停是不确定的 线程的不同步很容易造成数据的混乱,一个案例演示即可看出: 模拟一个银行存取款 Bank类 public class Bank { private String account; // 账号 private double balance; // 余额 public Bank(String account, int balance) { th原创 2021-06-25 17:57:20 · 82 阅读 · 2 评论 -
24.认识Java线程
线程的创建 Thread类 Thread是一个线程类,位于java.lang包下 构造方法 说明 Thread() 创建一个线程对象 Thread(String name) 创建一个具有指定名称的线程对象 Thread(Runable target) 创建一个基于Runnable接口实现类的线程对象 Thread(Runnable target, String name) 创建一个基于Runnable接口实现类,并且具有指定名称的线程对象 Thread类的常用方法原创 2021-06-17 17:33:07 · 126 阅读 · 1 评论 -
23.泛型让类型更加规范性
为什么使用泛型 在Java增加泛型之前,泛型程序设计使用继承来实现的,可其中也有不便,需要强制类型转换,以及可向集合中添加任意类型的对象,存在一定的风险。 因此使用泛型就是为了避免需要强制类型转换,以及运行时异常的安全隐患,可以控制问题在编译时报错。 使用泛型 List<String> list = new ArrayList<String>(); 在Java SE7以后的版本中,构造方法中可以省略泛型类型 List<String> list = new ArrayLi原创 2021-06-09 21:55:06 · 200 阅读 · 2 评论 -
22.集合排序
Collections Collections是一个类,与Collection不同,Collection是接口。 这个类包它包含对集合进行操作的方法,常用的排序、交换等,里面的方法都是静态的 sort 示例:对整型数据进行排序 // 对存储在List中的整型数据进行排序 List<Integer> list = new ArrayList<Integer>(); list.add(5); list.add(2); list.add(7); list.add(1原创 2021-06-09 18:42:21 · 118 阅读 · 1 评论 -
21.集合的使用
集合 应用场景 无法预测存储数据的数量 同时存储具有一对一关系的数据 需要进行数据的增删 数据重复问题 体系结构 Conlection Collection 接口有 3 种子类型集合: List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、ArrayBlockingQueue等。 List List是元素有序并且可以重复的集合,称为序列 List可以精确的控制每个元素的插入位置,或删除某原创 2021-06-09 02:19:59 · 280 阅读 · 0 评论 -
20.字符串处理工具类
String 常用方法 length() 返回此字符串的长度。 String str = "Java 编程 基础"; System.out.println(str.length()); // 10 charAt() 返回 char指定索引处的值。 String str = "Java 编程 基础"; System.out.println(str.charAt(1)); // a indexOf() 返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。 String str = n原创 2021-06-02 00:43:10 · 291 阅读 · 0 评论 -
19.包装类
包装类 包装类与基本数据类型 Java是一种面向对象的编程语言,但Java中却存在8中“特殊的”数据类型,它们不支持面向对象的编程机制,也不具备面向对象的特性(不包含任何属性和方法)。这8种数据类型分别为byte、short、int、long、float、double、char、boolean,它们被称为Java的8中基本数据类型。 兼容这8种基本数据类型给开发带来了一定的便利,例如采用8种数据类型进行常规的数据处理时非常的方便。但在某些场景下,采用基本数据类型却带来了一定的约束, 它们只是纯粹的数据,除原创 2021-06-01 19:46:37 · 114 阅读 · 1 评论 -
18.什么是快乐“异常”,让我带你研究
异常 什么是异常 在程序运行过程中,意外发生的情况,背离我们程序本身的意图的表现,都可以理解为异常。 Throwable Throwable是Error和Exception的父类,用来定义所有可以作为异常被抛出来的类。 Error Error是编译时错误和系统错误,如: 虚拟机错误 内存溢出 线程死锁 系统错误在除特殊情况下,都不需要关心,基本不会出现。而编译时错误,如果你使用了编译器,那么编译器会提示。 Exception Exception则是可以被抛出的基本类型,我们需要主要关心的也是这个原创 2021-05-23 22:42:25 · 210 阅读 · 0 评论 -
17.懒汉单例——静态内部类守护线程安全
单例懒汉实现解决 静态内部类 单例模式实现方式有好多种,但大部分都会有多线程环境下的问题,在多线程环境下,jvm对一个类的初始化会做限制,同一时间只会允许一个线程去初始化一个类,因此将对象的初始化放在内部类里,静态内部类是个很好的解决办法 public class SingletonFive { private SingletonFive() {} // 创建静态内部类 private static class SingletonFiveLazy{ private static Singlet原创 2021-05-10 00:05:45 · 211 阅读 · 0 评论 -
16.学内部类累不累?
抽象类 抽象类无法直接创建对象,只能被子类继承后,可以通过向上转型创建子类对象。用abstract修饰 public abstract class Animal {} 应用场景 某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。。 抽象方法 使用abstract修饰;父类中抽象方法定义时不可以有方法体,子类必须重写父类的抽象方法 父类 // 抽象方法 public abstract void info(); 子类 @Override public void inf原创 2021-05-09 16:48:29 · 131 阅读 · 0 评论 -
15.爪哇式变脸——多态
多态 不同类的对象对同一消息做出不同的响应 分类 编译时多态 设计时多态,比如重载 运行时多态 程序运行时动态决定调用哪个方法,比如重写 必要条件 满足继承关系 父类引用指向子类对象 示例: Animal类 package com.jachie.animal; public class Animal { private String name; private int month; public Animal() {} public Animal(String name,原创 2021-05-07 00:44:00 · 117 阅读 · 2 评论 -
14.懒汉单例,双重校验锁再把关
单例懒汉实现解决 双重校验锁 理解了线程不安全的原因,以及线程同步的性能消耗原理,因此就需要对其作出改进,在保障线程安全的前提下,又能进一步的减少消耗。 其实不难发现,我们只要保证instance = new SingletonOne(); 是线程互斥访问的就可以保证线程安全了。 那把同步方法加以改造,只用synchronized块包裹这一句。就可以进行: package com.jachie.singleton; public class SingletonThree { private Singl原创 2021-05-04 19:25:30 · 143 阅读 · 1 评论 -
13.懒汉单例,同步锁搞定
单例懒汉实现解决 同步锁 因此我们可以使用同步锁,通过修饰符synchronized 去修饰getInstance()方法。 注: 通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用,线程之间会产生互斥,与此同时就不会出现多线程导致生成多个实例对象 package com.jachie.singleton; /** * 懒汉式:实例对象不会直接初始化,直到第一次调用的时候才会初始化 * @author 哒哒哒原创 2021-05-04 19:19:55 · 267 阅读 · 0 评论 -
12.Java设计模式入门——单例模式
所谓设计模式就是软件开发人员对于软件开发过程的一种出色的方案 单例模式 使一个类有且仅有一个实例,并且自行实例化向整个系统提供 其目的是为了让类的一个对象成为该类系统中的唯一实例 要求 只能有一个实例 必须自行创建实例 而且得向整个系统提供这个实例,供其访问与使用 实现方法 只提供私有的构造方法 含有一个该类的静态私有对象 提供一个静态的共有方法用于创建、获取静态私有对象 代码实现方案 饿汉式 在类中私有对象创建的过程中即可完成实例化 特征:采用空间换时间,对象直接实例化在那儿,不管用还是不用,在原创 2021-05-03 21:46:53 · 146 阅读 · 0 评论 -
11.继承封装编程练习
题目 编码 Car类 package com.jachie.car; /** * 车类 * @author 哒哒哒 * */ public class Car { private String color; private String userName; public Car() { } /** * 带参构造初始化对象 * @param color * @param userName */ public Car(String color, String u原创 2021-05-03 16:15:42 · 137 阅读 · 0 评论 -
10.final关键字
final 在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。 修饰类 用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰;要注意final类中的所有成员方法都会被隐式地指定为final方法。 注意:在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。 修饰方法 被final修原创 2021-05-03 01:04:49 · 101 阅读 · 0 评论 -
09.Object这个老骨头
Object Object类是所有类的父类 一个类没有使用extends关键字明确标识继承关系,则默认继承Object类(包括数组) Java中的每个类都可以使用Object中定义的方法 Object常用的方法 equals() 比较的是两个引用是否指向同一个对象 注意:在String类当中,String类对Object类的equals()方法进行了重写,因此,,String类的equals()方法是比较字符串的相同性 Cat cat1 =new Cat("Huahua", 2); Cat原创 2021-05-03 01:04:02 · 83 阅读 · 0 评论 -
08.面向对象——继承
继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 注意 子类拥有父类的特征,而父类没有,父类更通用,子类更具体(特征包括属性和方法,自身的特性,拥有父类没有的) 使用extends继承父类,语句格式:class 子类名 extends 父类名{} 父类中一般只定义一般属性和方法(这个一般可以理解为是子类共有的,这就是父类更通用,而子类拥有其他的,所以子类更具体) 子类中通过super关键字来调用父构造方法,子类默认调用父类原创 2021-05-02 17:11:53 · 165 阅读 · 0 评论 -
07.封装的综合运用——学生信息管理(非集合版)
Studens类 package com.jachie.entiy; /** * * @author 哒哒哒 */ public class Students { private String stuName; // 学生姓名 private int stuId; private String sex; private int age; private Subject sb; /** * 4参构造方法 * @param stuName * @param stuId原创 2021-04-30 18:19:10 · 119 阅读 · 1 评论 -
06.封装的必要性
封装 将类的某些信息隐藏在类的内部,不允许外部程序直接访问 通过该类提供的方法来实现对隐藏信息的操作与访问 隐藏对象的信息 留出访问的接口原创 2021-04-29 20:10:13 · 273 阅读 · 1 评论 -
04.数组
数据类型 数据类型分为两大类 基本数据类型 int short long byte float double char boolean 引用数据类型 类 接口 数组 数组 语法格式 数组声明 // 1. int[ ] myArray; // 2. char ChmyArray[ ]; 数组创建 数组会在内存中开辟一块连续的内存空间 // 1. int [ ] arr; arr = new int [10]; // 2. int [] myArr = new i原创 2021-04-24 17:09:47 · 83 阅读 · 0 评论 -
03.不得不认识的循环结构
循环结构 while 语法格式 while(循环条件){ 语句; } 实例1----输出1~5的累加和 package com.jachie; public class HelloJ { public static void main(String[] args) { // 输出1~5的累加和 int sum = 0; int n = 1; while(n<=5) { sum += n; n++; } System.out.print(sum); } }原创 2021-04-24 09:00:00 · 71 阅读 · 0 评论 -
02.一把趁手的Java开发武器——Eclipse
Eclipse 下载 下载地址 如果下载较慢,建议直接点击packages下载,这种方式下载速度可以起飞 安装 直接解压就行了,然后打开原创 2021-04-23 16:25:58 · 87 阅读 · 0 评论 -
05.与Java谈个对象
类和对象 类只是一个模子,确定对象将会拥有的特征(属性)和行为(方法) 对象是类的实例表现 属性和方法 属性就是对象具有的各种静态特征 方法就是对象具有的各种动态的行为原创 2021-04-26 16:19:45 · 62 阅读 · 0 评论 -
01.JAVA的初始
JDK的安装 下载地址 提取码:21xl 环境配置 此电脑>>>属性>>>高级系统设置>>>环境变量 点击path 配置变量路径 检查配置 打开命令提示符,输入java -version,显示java版本即可 以及输入javac,出现下列提示 Java程序执行过程 JAVA讲究的就是一次编译、到处执行 源文件(program.java)—(编译器编译)>>>字节码文件(program.class)—(虚拟机解释执行)>&g原创 2021-04-23 14:49:42 · 78 阅读 · 0 评论