
Java知识体系
上课不要睡觉了
逝者如斯夫,不舍昼夜
展开
-
Java——String 类的常见操作_5.字符串的截取和分割_substring ()方法_split()方法_charAt() 方法
在String 类中针对学符串的截取和分割操作提供了两个方法。substring ()方法用于截取字符串的一部分。split()方法可以将字符串按照某个字符进行分割。ExampleAPI06:public class ExampleAPI06 { public static void main(String[] args) { String str = "羽毛球-蓝球-乒乓球"; //字符串截取 System.out.println("从第原创 2021-11-23 22:23:08 · 1084 阅读 · 0 评论 -
Java——4.字符串的判断操作_equals()方法和==判断
操作字符串时,经常需要对字符串进行一些判断,如判断学符串是否以指定的字符串开始、结束,是否包含指定的字符串,字符串是否为空等。ExampleAPI05 :public class ExampleAPI05 { public static void main(String[] args) { String s1 = "String"; //声明一个字符串 String s2 = "Str"; System.out.println("判断是否以字符原创 2021-11-11 00:11:04 · 3034 阅读 · 0 评论 -
Java——3.字符串的替换和去除空格操作_replace ()和 trim ()方法
程序开发中,用户输入数据时经常会有一些错误和空格,这时可以使用 String 类的 replace ()和 trim ()方法,进行字符串的替换和去除空格操作。ExampleAPI04:public class ExampleAPI04 { public static void main(String[] args) { String s = "itcast"; //字符串替换操作 System.out.println("将 it 替换成 cn.i原创 2021-11-07 10:08:39 · 2794 阅读 · 0 评论 -
Java——2.字符串的转换操作
程序开发中,经常需要对字符串进行转换操作,例如将字符串转换成数组的形式,将字符串中的字符进行大小写转换等。ExampleAPI03:public class ExampleAPI03 { public static void main(String[] args) { String str = "abcd"; System.out.print("将字符串转换为字符数组后的结果:"); char[] charArray = str.toCharArr原创 2021-11-04 16:12:00 · 494 阅读 · 0 评论 -
Java——1.字符串的基本操作
在程序中,需要对字符串进行一些基本操作,如获得字符串长度、获得指定位置的字符等。 String 类针对每一个操作都提供了对应的方法。例题 ExampleAPI02:public class ExampleAPI02 { public static void main(String[] args) { String s = "abcdedcba"; //声明字符串 System.out.println("字符串的长度为:"+s.length()); //获取字符串原创 2021-11-03 11:23:14 · 140 阅读 · 0 评论 -
Java——String 类常用方法
方法声明功能描述int indexOf ( int ch )返回指定字符在此字符串中第一次出现处的索引int lastlndexOf ( int ch )返回指定学符在此学符申中最后一次出现处的索引char charAt ( int index )返回字符串中 index 位置上的字符,其中 index 的取值范围是:0~(字符串长度一1)boolean endsWith ( String suffix )判断此字符串是否以指定的字符串结尾int leng...原创 2021-11-03 10:50:51 · 139 阅读 · 0 评论 -
Java API——String 类的初始化
API ( Application Programming Interface )指的是应用程序编程接口。Java API 指的就是 JDK 中提供的各种功能的 Java 类。在应用程序中经常会用到字符串,所谓字符串就是指一连串的字符,它是由许多单个字符连接而成的,如多个英文学母所组成的一个英文单词。字符串中可以包含任意字符,这些字符必须包含在一对双引号“”之内,例如“ abc ”。在 Java 中定义了 String 和 StringBuffer 两个类来封装字符串,并提供了一系列操作字符串的方法,它原创 2021-10-30 16:56:14 · 666 阅读 · 0 评论 -
Java——多线程通信_问题解决_wait ()、notify ()、notifyAll()
如果想解决上一条引入的问题,就需要控制多个线程按照一定的顺序轮流执行,此时需要让线程间进行通信。在 Object 类中提供了 wait ()、notify ()、notifyAll()方法用于解决线程间的通信问题,由于 Java 中所有类都是 Object 类的子类或间接子类,因此任何类的实例对象都可以直接使用这些方法。唤醒线程的方法:方法声明功能描述void wait ()使当前线程放弃同步锁并进入等待,直到其他线程进人此同步锁,并调用 notify()方法,或 notify A原创 2021-10-20 10:33:25 · 290 阅读 · 0 评论 -
Java——多线程通信_问题引入
在多线程程序中需要各个线程协同完成工作,就需要线程之间进行通信。为了更好地理解线程间的通信,我们可以模拟这样的一种应用场景,假设有两个线程同时去操作同一个存储空间,其中一个线程负责向存储空间中存入数据,另一个线程负责取出数据。通过一个案例来实现上述情况,首先定义一个类,在类中使用一个数组来表示存储空间,并提供数据的存取方法。Storage :public class Storage { //数据存储数组 private int[] cells = new int[10]; //原创 2021-10-19 22:48:41 · 422 阅读 · 0 评论 -
Java——死锁问题_两个线程都需要对方所占用的锁
ExampleM14://死锁问题class DeadLockThread implements Runnable { static Object chopsticks = new Object(); //定义 Object类型的 chopsticks(筷子)锁对象 static Object knifeAndFork = new Object(); //定义 Object类型的 knifeAndFork(刀叉)锁对象 private boolean flag; //原创 2021-10-18 21:38:22 · 130 阅读 · 0 评论 -
Java——同步方法_synchronized 关键字
同步代码块可以有效解决线程的安全问题,当把共享资源的操作放在 synchronized 定义的区域内时,便为这些操作加了同步锁。在方法前面同样可以使用 synchronized 关键字来修饰,被修饰的方法为同步方法,它能实现和同步代码块同样的功能,具体语法格式如下: synchronized 返回值类型 方法名([参数1,……]){}被 synchronized 修饰的方法在某一时刻只允许一个线程访问,访问该方法的其他线程都会发生阻塞,直到当前线程访问完毕后,其他线程才有机会执行方法。Exampl原创 2021-10-17 23:10:15 · 431 阅读 · 0 评论 -
Java——多线程同步_同步代码块synchronized 关键字
线程安全问题其实就是由多个线程同时处理共享资源所导致的。要想解决线程安全问题,必须得保证下面用于处理共享资源的代码在任何时刻只能有一个线程访问。为了实现这种限制, Java 中提供了同步机制。当多个线程使用同一个共享资源时,可以将处理共享资源的代码放置在一个代码块中,使用 synchronized 关键字来修饰,被称作同步代码块,其语法格式如下:synchronized(lock){ 操作共享资源代码}上面的代码中, lock 是—个锁对象,它是同步代码块的关键。当线程执行同步代码块时,首先会原创 2021-10-16 23:38:08 · 801 阅读 · 0 评论 -
Java——多线程同步_线程安全
多线程的并发执行可以提高程序的效率,但是,当多个线程去访问同一个资源时,也会引发一些安全问题。例如,当统计一个班级的学生数目时,如果有同学进进出出,则很难统计正确。模拟四个窗口出售10张票,并在售票代码中使每次售票时线程休眠10ms。ExampleM11:///线程安全public class ExampleM11 { public static void main(String[] args) { SaleThread saleThread = new SaleThread原创 2021-10-15 14:42:00 · 193 阅读 · 0 评论 -
Java——线程插队_join ()方法来实现“插队功能”
在 Thread 类中提供了一个 join ()方法来实现“插队功能”。当在某个线程中调用其他线程的 join ()方法时,调用的线程将被阻塞,直到被 join ()方法加入的线程执行完成后它才会继续运行。ExampleM10://线程插队public class ExampleM10 { public static void main(String[] args) throws Exception{ //创建线程 Thread t = new Thread(n原创 2021-10-14 23:01:23 · 1479 阅读 · 0 评论 -
Java——线程让步_yield()方法
线程让步可以通过 yield ()方法来实现,该方法和 sleep ()方法有点相似,都可以让当前正在运行的线程暂停,区别在于 yield() 方法不会阻塞该线程,它只是将线程转换成就绪状态,让系统的调度器重新调度一次。当某个线程调用 yield ()方法之后,只有与当前线程优先级相同或者更高的线程才能获得执行的机会。ExampleM09://线程让步//定义 YieldThread 类继承 Thread 类class YieldThread extends Thread { //定义一个有原创 2021-10-13 22:59:04 · 791 阅读 · 0 评论 -
Java——线程休眠 sleep()
如果希望人为地控制线程,使正在执行的线程暂停,将 CPU 让给别的线程,这时可以使用静态方法 sleep ( long millis ),该方法可以让当前正在执行的线程暂停一段时间,进人休眠等待状态。sleep ( long millis )方法声明抛出InterruptedException 异常,因此在调用该方法时应该捕获异常,或者声明抛出该异常。案例 ExampleM08:public class ExampleM08 { public static void main(String[]原创 2021-10-08 22:49:40 · 1251 阅读 · 0 评论 -
Java——继承Thread类创建多线程
Java——继承Thread类创建多线程单线程因为该程序是一个单线程程序,所以只会循环run()方法的死循环。单线程程序public class ExampleM01 { public static void main(String[] args) { MyThread myThread =new MyThread(); //创建 MyThread 实例对象 myThread.run(); //调用 MyThread类的 run()方法 wh原创 2021-10-07 15:23:26 · 573 阅读 · 0 评论 -
Java——线程的优先级
在应用程序中,如果要对线程进行调度,最直接的方式就是设置线程的优先级。优先级越高的线程获得 CPU 执行的机会越大,而优先级越低的线程获得 CPU 执行的机会越小。程的优先级用1~10之间的整数来表示,数字越大优先级越高。除了可以直接使用数字表示线程的优先级,还可以使用 Thread 类中提供的三个静态常量表示线程的优先级。static int MAX_PRIORITY 表示线程的最高优先级,相当于值10static int MIN_PRIORITY 表示线程的最低优先级,相当于值1static原创 2021-10-02 07:52:46 · 626 阅读 · 0 评论 -
Java——程序的调度_分时调度模型和抢占式调度模型
在计算机中,线程调度有两种模型,分别是分时调度模型和抢占式调度模型。分时调度模型是指让所有的线程轮流获得CPU的使用权,并且平均分配每个线程占用的CPU时间片。抢占式调度模型是指让可运行池中优先级高的线程优先占用CPU,而对于优先级相同的线程,随机选择一个线程使其占用CPU,当它失去了CPU的使用权后,再随机选择其他线程获取CPU试用权。Java虚拟机默认使用抢占式调度模型,大多数情况下程序员 不需要去关心它,但在某些特定的需求下需要改变这种模式,由程序自己来控制CPU的调度。...原创 2021-10-02 07:47:45 · 996 阅读 · 0 评论 -
Java——线程的生命周期及状态转换
新建状态(New)创建一个线程对象后,该线程对象就处于新建状态,此时它不能运行,和其他Java象一样,仅仅由 Java 虚拟机为其分配了内存,没有表现出任何线程的动态特征。就绪状态(Runnable)当线程对象调用了 start()方法后,该线程就进人就绪状态(也称可运行状态)。处于就绪状态的线程位于可运行池中,此时它只是具备了运行的条件,能否获得 CPU 的使用权开始运行,还需要等待系统的调度。运行状态(Running)如果处于就绪状态的线程获得了 CPU 的使用权,开始执行 run ()方法.原创 2021-09-30 22:20:16 · 230 阅读 · 0 评论 -
Java——后台线程_setDaemon ( true )语句
对 Java 程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程运行,这个进程就会结束。这里提到的前台线程和后台线程是一种相对的概念,新创建的线程默认都是前台线程,如果某个线程对象在启动之前调用 setDaemon ( true )语句,这个线程就变成一个后台线程。案例:class DamonThread implements Runnable { //创建 DamonThread类,实现 Runnable接口 public void run() { //实现原创 2021-09-28 15:15:55 · 393 阅读 · 0 评论 -
Java——继承Thread类创建多线程和实现 Runnable 接口创建多线程对比
直接继承 Thread 类和实现 Runnable 接口都能实现多线程。案例:假设售票厅有四个窗口可发售某日某次列车的100张车票,这时,100张车票可以看作共享资源,四个售票窗口需要创建四个线程。为了更直观显示窗口的售票情况,可以通过Thread的currentThread()方法得到当前的线程实例对象,然后调用getName ()可以获取到线程的名称。文章目录通过继承 Thread 类的方式来实现多线程的创建通过实现 Runnable 接口的方式来实现多线程的创建通过上面的两个例程可以看出,实现原创 2021-09-27 11:16:25 · 730 阅读 · 0 评论 -
Java——实现 Runnable 接口创建多线程
Java 中只支持单继承,一个类一旦继承了某个父类就无法再继承 Thread 类,比如学生类 Student 继承了 Person 类,就无法通过继承 Thread 类创建线程。为了克服这种弊端, Thread 类提供了另外一个构造方法 Thread ( Runnable target ),其中 Runnable 是一个接口,它只有一个 run ()方法。当通过 Thread ( Runnable target )构造方法创建线程对象时,只需为该方法传递一个实现了 Runnable 接口的实例对象,这样原创 2021-09-25 09:44:38 · 427 阅读 · 0 评论 -
Java——线程的创建_Thread 类
Java——线程的创建Java 提供了两种多线程实现方式一种是继承 java.lang 包下的 Thread 类,覆写 Thread类的 run ()方法,在 run ()方法中实现运行在线程上的代码。另一种是实现 java.lang.Runnable 接口,同样是在 run ()方法中实现运行在线程上的代码。...原创 2021-09-22 22:21:47 · 255 阅读 · 0 评论 -
Java——多线程——线程
Java——多线程——线程定义:每个运行的程序都是一个进程,在一个进程中还可以有多个执行单元同时运行,这些执行单元可以看作程序执行的一条条线索,被称为线程。操作系统中的每一个进程中都至少存在一个线程。当一个 Java 程序启动时,就会产生一个进程,该进程会默认创建一个线程,在这个线程上会运行 main ()方法中的代码。单线程按照调用顺序依次往下执行,没有出现两段程序代码交替运行的效果,这样的程序称作单线程程序。多线程如果希望程序中实现多段程序代码交替运行的效果,则需要创建多个线程,即多线程原创 2021-09-21 15:23:42 · 272 阅读 · 0 评论 -
Java——多线程——进程
Java——多线程——进程定义:在一个操作系统中,每个独立执行的程序都可称为一个进程,也就是“正在运行的程序”。目前大部分计算机上安装的都是多任务操作系统,即能够同时执行多个应用程序,最常见的有 Windows 、 Linux 、 UNIX 等。在多任务操作系统中,表面上看是支持进程并发执行的,例如可以一边听音乐一边聊天。但实际上这些进程并不是同时运行的。在计算机中,所有的应用程序都是由 CPU 执行的,对于一个 CPU 而言,在某个时间点只能运行一个程序,也就是说只能执行一个进程。操作系统会为原创 2021-09-20 10:10:21 · 179 阅读 · 0 评论 -
Java——访问控制
Java——访问控制了解了包的概念,就可以系统地介绍 Java中的访问控制级别。在 Java 中,针对类、成员方法和属性提供了四种访问级别,分别是 private 、 default 、 protected 和 public 。Java 中的四种访问控制级别①private (类访问级别):如果类的成员被 private 访问控制符来修饰,则这个成员只能被该类的其他成员访问,其他类无法直接访问。类的良好封装就是通过 private 关键字来实现的。②default (包访问级别):如果一个类或者原创 2021-09-19 10:55:12 · 232 阅读 · 0 评论 -
Java——给Java应用打包
Java——给Java应用打包在实际开发中,经常需要开发一些类提供给别人使用,为了能够更好的管理这些类,在JDK中提供一个jar命令,使用这个命令能够将这些类打包成一个文件,这个文件的扩展名为.jar,被称为jar文件。jar文件的全称为Java Archive File,意思是Java档案文件,它是一种压缩文件,独立于任何操作系统平台,习惯上将jar文件称为jar包。在使用jar包时,只需要在classpath环境变量中包含这个jar文件的路径(配置classpath环境变量),Java虚拟机就能自动原创 2021-09-19 10:50:33 · 446 阅读 · 0 评论 -
Java——包——import语句
Java——包——import语句使用import可以在程序中一次导入某个指定包下的类,这样就不必每次用到该类时都书写完整类名了。import 包名.类名;需要注意的是,import通常出现在package语句之后,类定义前。如果有时候需要用到一个包中的许多类,则可以使用“import 包名.*;”来导入该包下的所有类。Java语言中的常用包1、java.lang:包含Java语言的核心类,如String、Math、System和Thread类等,使用这个包中的类无须使用import语句导入,原创 2021-09-18 09:00:24 · 1952 阅读 · 0 评论 -
Java——包——包的定义与使用
Java——包——包的定义与使用为便于对硬盘上文件进行管理,通常都会将文件分目录进行存放。同理,在程序开发过程中,也需要将编写的类分目录存放便于管理,为此Java引入了包(package机制),程序可以通过声明包的方式对Java类定义目录。使用 package语句格式:package cn.intcast.chapter04; //使用package关键字声明包public class Example01{...}注意:包的声明只能位于Java源文件的第一行。当编译一个声明了包的Java源原创 2021-09-17 22:44:41 · 357 阅读 · 0 评论 -
Java——异常——自定义异常
Java——异常——自定义异常为了解决在程序开发中有时可能需要描述程序中特有的异常情况(例如在设计divide()方法时不允许被除数为负数)这个问题,在Java中允许用户自定义异常,但自定义异常类必须继承自Exception或其子类。案例1://下面的代码是自定义一个异常类继承自 Exceptionpublic class DivideByMinusException extends Exception{ public DivideByMinusException (){ s原创 2021-09-16 22:17:18 · 3191 阅读 · 0 评论 -
Java——异常——运行时异常与编译时异常
Java——异常——运行时异常与编译时异常①编译时异常1、经常会在程序编译时产生一些异常,而这些异常必须要进行处理,这种异常被称为编译时异常,也称为checked异常。2、在Java中,Exception类中除了RuntimeException类及其子类都是编译时异常。3、特点Java编译器会对其进行检查,如果出现问题异常就必须对异常进行处理,否则程序无法通过编译。4、处理异常方法:使用try…catch语句对异常进行捕获。使用throws关键字声明抛出异常,调用者对其处理。②运行时异常1、原创 2021-09-15 08:55:11 · 3397 阅读 · 0 评论 -
Java——面向对象的一些题目(2)
**说明:**这里的答案是根据本人学习的经验总结而出,不一定完全正确,经供参考,欢迎评论斧正。判断题1.抽象方法必须定义在抽象类中,所以抽象类中的方法都是抽象方法。(F)2. Java 中被 final 关键字修饰的变量,不能被重新赋值。(T)3.不存在继承关系的情况下,也可以实现方法重写。(F)4. package 声明语句应当为 Java 源文件中的第一条语句。(T)5.接口中只能定义常量和抽象方法。(T)...原创 2021-09-14 13:04:20 · 372 阅读 · 0 评论 -
Java——异常——throws关键字
Java——异常——throws关键字用throws关键字对外声明该方法有可能发生异常。语法格式:修饰符 返回值类型 方法名([参数1,参数2,...])throws ExceptionType1[,ExceptionType...]{}案例1://异常 throws关键字public class Abnormal04 { public static void main(String[] args) { //下面的代码定义了一个 try...catch语句用于捕获异原创 2021-09-14 12:07:53 · 794 阅读 · 0 评论 -
Java——面向对象的一些题目
这里整理了一些题目1.在 Java 语言中,允许使用已存在的类作为基础创建新的类,这种技术称为继承。2.一个类如果实现一个接口,那么它就需要实现接口中定义的全部方法,否则该类就必须定义成抽象类。3.在程序开发中,要想将一个包中的类导入到当前程序中,可以使用 import关键字。4。一个类可以从其他的类派生出来,派生出来的类称为子类 ,用于派生的类称为基类或者父类。5. JDK 中定义了大量的异常类,这些类都是Exception类的子类或者间接子类。6.定义一个 Java 类时,如果前面使用fin原创 2021-09-13 16:13:40 · 1869 阅读 · 0 评论 -
Java——异常处理——finally
Java——异常处理——finally希望无论程序是否发生异常都要执行,可以在try…catch语句后,加一个finally代码块。案例://异常 finally(总结)public class Abnormal03 { public static void main(String[] args) { //下面的代码定义了一个 try...catch语句用于捕获异常 try{ int result=divide(4,0); //调用方法原创 2021-09-13 07:47:09 · 1210 阅读 · 0 评论 -
Java——异常处理——try...catch
Java——异常处理——try…catch为了解决由于发生了异常,程序立即终止,无法继续向下执行的问题,Java中提供了一种对异常进行处理的方式——异常捕获。异常捕获语法格式:try{ //程序代码块}catch(ExceptionType(Exception类及子类) e){ //对ExceptionType的处理}关于try…catch:在try代码块中编写可能发生异常的Java语句,catch代码块中编写针对异常进行处理的代码。catch代码块需要一个参数指明它所能够接收的异常原创 2021-09-12 12:28:08 · 858 阅读 · 0 评论 -
Java——异常类
Java——异常类在Java中提供了大量的异常类,这些类都继承自java.lang.Throwable类。Throwable体系架构:1、Error代表程序中产生的错误:Error类称为错误类,它表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠修改程序本身是不能恢复执行的。2、Exception代表程序中产生的异常Exception类称为异常类,它表示程序本身可以处理的错误,在开发Java程序中进行的异常处理,都是针对Exception类及其子类。在Exception原创 2021-09-11 19:57:57 · 2465 阅读 · 0 评论 -
Java——异常(1)
Java——异常(1)为了便于理解首先提供一个出现异常的代码。public class Abnormal { public static void main(String[] args) { int result=divide(4,0); //调用方法 System.out.println(result); } //下面的方法实现了两个整数相除 public static int divide(int x,int y){原创 2021-09-10 06:05:56 · 379 阅读 · 0 评论 -
Java——多态——匿名内部类
Java——多态——匿名内部类案例1://匿名内部类interface Animal15 { void shout();}//定义测试类class ExampleA15{ public static void main(String[] args) { //定义一个内部类 Cat实现 Animal接口 class Cat implements Animal15 { public void shout(){原创 2021-09-09 10:07:37 · 535 阅读 · 0 评论