java基础笔记
文章平均质量分 88
java自主学习笔记
静Yu
全栈领域优质创作者,华为云享专家,阿里云专家博主。社区[前端知识交流]创建者,欢迎你的加入。https://bbs.csdn.net/forums/JingYu
展开
-
Java 数据结构
Java数据结构简介原创 2023-10-22 21:14:58 · 492 阅读 · 3 评论 -
Java经典编程题
Java编程题1.设计一个学生类Student和它的一个子类Undergraduate. 要求如下:(1) Student 类有name和age属性,一个包含两个参数的构造方法,用于给name和age属性赋值,一个show()方法打印Student的属性信息。(将name和age属性私有化)(2)本科生类Undergraduate增加一个degree(学位)属性。有一个包含三个参数的构造方法,前两个参数用于给继承的name和age属性赋值,第三个参数给degree专业赋值,一个show()方法用于原创 2020-10-21 19:47:37 · 558 阅读 · 2 评论 -
String类的方法中常用的正则表达式
String的方法中常用的正则表达式 split() 方法中的正则表达式 replaceAll() 方法中的正则表达式split() 方法中的正则表达式 String类的对象方法split(regex)用regex把字符串分隔成若干个子串。 下面的例子求一行中被一个英文逗号和若干个空白符分隔的数的和:正则表达式的模式串预编译后匹配方式import java.util.regex.*;public class TestRegexSplit { public static void m原创 2021-02-01 12:00:49 · 921 阅读 · 1 评论 -
正则表达式的语法
正则表达式语法简介 正则表达式是独立于任何语言的,虽然不同的语言中其语法略有不同。 正则表达式的语法可以分为• 特殊字符• 边界匹配符• 逻辑操作符• 量词等 这些基本的语法规则合成使用,共同构成了正则表达式强大的表示和匹配功能 一般字符的语法在前一节已经介绍过(例如字符i)特殊字符的表达 例如,如果我们要查找一个字符串,这个字符串中至少包含两行(两行可以不相邻),前面一行中存在两个制表符,它们中间仅仅隔一数字,后面一行中至少有一个制表符,则正则表达式可以这样写:原创 2021-02-01 11:58:06 · 35048 阅读 · 1 评论 -
正则表达式的 Java语法
正则表达式的Java语法 正则表达式的模式串直接匹配方式 正则表达式的模式串预编译后匹配方式 正则表达式的预编译及匹配方式的语法正则表达式的模式串直接匹配方式下面的这个例子用正则表达式判断单词中是否含有i字母:import java.util.regex.*;public class TestRegexDirect { public static void main(String[] args){ String word = "university"; String patte.原创 2021-02-01 11:34:33 · 179 阅读 · 1 评论 -
线程联合和守护线程
线程联合一个线程thread1在运行时,可以让其它线程调用join()和本线程联合,如:thread2.join();这时,称thread1在运行期间联合了thread2如果线程thread1在运行期间联合了线程thread2• 线程thread1将中断执行• 线程thread2将获得CPU的使用权,并且将所有任务执行完毕,之后才让出使用权• 线程thread2执行完毕,线程thread1才能重新排队等待CPU的使用权如果线程thread1联合线程thread2时,线程thread2已经原创 2021-02-01 11:05:35 · 260 阅读 · 1 评论 -
线程的同步
线程同步1.当两个或多个线程共用同一批数据时,可能发生混乱• 比如,当一个线程需要处理一批账单,如果另一个线程也要处理相同的账单,可能会出现混乱的局面2.这时,需要进行线程同步的处理3.线程同步的关键字是synchronized4.一个方法使用关键字synchronized修饰后,如果某个线程获得CPU的使用权去使用该方法,CPU会让它执行完同步方法中的所有任务5.在这期间,CPU不会把时间片分配给其他也要使用同步方法的线程在同步方法中使用wait()1.当一个线程使用的同步方法中用到某原创 2021-02-01 11:02:25 · 192 阅读 · 0 评论 -
创建线程
本节提纲Thread类的构造方法通过继承Thread类创建线程通过实现Runnable接口创建线程Thread类的构造方法通过继承Thread类创建线程通过实现Runnable接口创建线程第一部分:public Thread()public Thread(Runnable target)第二部分:通过继承Thread类、重写run()方法而创建线程class SubThread extends Thread{ public void run(){ for (int i=1; i<原创 2021-02-01 10:49:38 · 179 阅读 · 1 评论 -
线程的生命周期
线程的生命周期1.线程产生2.线程存在 运行 中断3.线程消亡线程产生1.Java提供了线程类Thread2.Thread类在java.lang包中,使用该类不需要import语句进行引用3.可以通过继承Thread类或者实现Runnable接口的方式创建线程对象线程存在——运行1.创建了线程对象之后,它需要调用start()方法获取使用CPU资源的排队机会2.轮到某个线程运行时,JVM(Java虚拟机)就把CPU的使用权交给这个线程,并调用这个线程的run()方法运行该线程线原创 2021-02-01 10:43:39 · 223 阅读 · 1 评论 -
线程的概念
什么是进程?进程是程序的一次动态执行过程,它是从代码加载、代码执行到执行完毕的一个完整的过程同一段程序,可以作为执行蓝本被多次加载到系统的不同内存区域中执行,从而形成不同的进程什么是线程?线程是比进程更小的单位,可以是进程的一部分。一个进程在其执行过程中,可以产生多个线程,形成多个执行流。TestNoneThread.javaclass Living{ public static void work() { for(int i=0; i<10; i++) { .原创 2021-02-01 10:31:09 · 388 阅读 · 0 评论 -
复选框和单选按钮
复选框JCheckbox类用来进行是/非选择操作 单选按钮JRadioButton类用来进行多选一操作 这两个类都在javax.swing包中JCheckbox复选框的构造方法 public JCheckBox()• 创建一个无提示文本、无提示图标的复选框对象,复选框的初始状态是未选中 public JCheckBox(String text)• 创建一个提示文本为text的复选框对象,复选框的初始状态是未选中 public JCheckBox(Icon icon)•.原创 2021-01-31 17:24:49 · 540 阅读 · 0 评论 -
按钮与标签组件
JButton按钮的构造方法 public JButton(String text)• 创建名字是text的按钮。 public JButton(Icon icon)• 创建带有图标icon的按钮。 public JButton(String text, Icon icon)创建名字是text且带有图标icon的按钮JButton按钮的常用方法 public void setText(String text)按钮调用该方法可以重新设置当前按钮的名字,名字由参数text指定 p原创 2021-01-31 17:21:04 · 246 阅读 · 1 评论 -
文本组件与 ActionEvent事件
本节提纲JTextField文本框JPasswordField密码框JTextArea文本区ActionEvent事件JTextField文本框JPasswordField密码框JTextArea文本区ActionEvent事件原创 2021-01-31 15:33:14 · 638 阅读 · 1 评论 -
中间容器
JPanel类 最常用的中间容器是JPanel类的对象 可以为JPanel类的对象设置布局,向其中添加组件,然后将JPanel类的对象作为一个整体添加到窗体或其它容器中JPanel类的构造方法 public JPanel()• JPanel类的对象的默认布局是FlowLayout• JPanel类的对象可以调用setLayout方法更改布局 例如• JPanel panel = new JPanel();• panel.setLayout(new GridLayout(1, 2原创 2021-01-31 15:29:15 · 635 阅读 · 1 评论 -
盒式布局
行型盒式布局 Box类的静态方法createHorizontalBox()可以获得一个具有行型盒式布局的盒式容器• Box box;• box=Box.createHorizontalBox(); 行型盒式布局容器中添加的组件的上沿在同一水平线上列型盒式布局 Box类的静态方法createVerticalBox()可以获得一个具有列型盒式布局的盒式容器• Box box;• box=Box.createVerticalBox(); 列型盒式布局容器中添加的组件的左沿在同一原创 2021-01-31 15:23:56 · 1601 阅读 · 1 评论 -
GridLayout布局
GridLayout布局管理器 GridLayout类在java.awt包中 GridLayout布局使得容器中的各个组件以规则的网格状分布,平均占据整个容器空间 当容器的大小发生变化时,其中的组件大小也发生变化,但始终平均占据容器空间 GridLayout容器中的组件始终充满网格某个块的所有空间 GridLayout容器中添加组件时,以行为主序:第一行第一个,第一行第二个…第二行第一个…GridLayout的构造方法public GridLayout(int rows,原创 2021-01-31 15:19:59 · 9264 阅读 · 0 评论 -
BorderLayout布局
BorderLayout布局管理器 BorderLayout类在java.awt包中 JFrame类的默认布局是BorderLayout BorderLayout布局把容器划分为东、西、南、北、中五个区域,中间区域最大 添加组件的方法有两个:• add(x, BorderLayout.pos)• add(BorderLayout.pos, x)• pos是NORTH, SOUTH, EAST, WEST,CENTER之一BorderLayout布局 东、西区和南、北区充满程原创 2021-01-31 15:16:07 · 3599 阅读 · 0 评论 -
FlowLayout布局
布局设计 当把组件添加到容器中时,希望控制组件在容器中的位置,这就需要学习布局设计的知识,负责布局工作的类称为布局管理器 窗体可以使用setLayout(布局对象)来更改自己的布局FlowLayout概述 FlowLayout类在java.awt包中 设置为FlowLayout布局的容器在添加组件时,组件按照先后顺序从左到右依次排列 一行排满之后转到下一行继续从左至右排列 组件的大小采用它们的最佳尺寸FlowLayout的构造方法 public FlowLayout(原创 2021-01-31 15:14:05 · 5020 阅读 · 1 评论 -
窗体类JFrame
JFrame窗体类 当应用程序需要一个窗口时,可以使用JFrame类或其子类创建一个对象 窗体默认被系统添加到显示器屏幕上,因此不允许将一个窗体添加到另一个容器中 JFrame类在javax.swing包中JFrame的构造方法 public JFrame() —— 创建一个无标题的窗口 public JFrame(String title) —— 创建一个标题为title的窗口JFrame的常用方法 public void setLocation(int x, int y原创 2021-01-31 15:10:54 · 748 阅读 · 0 评论 -
图形用户界面概述
图形用户界面3要素: 放置组件的容器(例如窗体、对话框、中间容器) 在容器中的组件(按钮、文本框、菜单等) 事件监听处理机制import java.awt.*;import java.awt.event.*;import javax.swing.*;public class TestGUI extends JFrame implements ActionListener{ JButton english = new JButton("English Title"); JButton原创 2021-01-31 15:01:04 · 788 阅读 · 0 评论 -
随机读写流
前面学习的文件输入流和文件输出流都是单向的,流中的数据必须按顺序进行读写 在某些情况下,程序需要不按照顺序随机地访问磁盘文件中的内容 Java提供了专门用来处理文件随机存取的类RandomAccessFileRadomAccessFile类RandomAccessFile----用来随机读取文件,其功能更完善----类直接隶属于Object类----类创建的流的指向既可以作为源,也可以作为目的地RandomAccessFile类的构造方法 public RandomAc.原创 2021-01-29 19:54:24 · 389 阅读 · 1 评论 -
对象流
对象流分为对象输入流 ObjectInputStream对象输出流 ObjectOutputStream对象输入流的构造方法public ObjectInputStream(InputStream in)从文件中读取对象时• FileInputStream a= new FileInputStream("tom.txt");• ObjectInputStream in = new ObjectInputStream(a);对象输出流的构造方法public ObjectOutpu原创 2021-01-29 19:46:53 · 300 阅读 · 1 评论 -
字符缓冲流
输入输出流的源或者目的地并不仅限于磁盘、网络 内存也可以作为输入输出流的来源和目的地 以内存作为源或者目的地的流称为内存流字符缓冲流分为BufferedReaderBufferedWriter字符缓冲输入流的构造方法字符缓冲输入流BufferedReader类的构造方法public BufferedReader(Reader in) FileReader inOne=new FileReader("a1.txt"); BufferedReader inTwo=.原创 2021-01-29 19:41:46 · 230 阅读 · 0 评论 -
文件字符流
文件字符输入流 FileReader类文件字符输出流 FileWriter类文件字符输入流的构造方法用文件名name创建一个文件字符输入流对象public FileReader(String name)例如:FileReader in = new FileReader ("a.txt");用File对象创建一个文件字符输入流对象public FileReader(File file)例如:File file=new File("data\\b.txt");FileReader原创 2021-01-29 17:08:53 · 241 阅读 · 1 评论 -
文件字节流
文件流File类只能操纵文件、获取与文件相关的信息,但不能对文件进行读写要做到对文件的读写操作,必须使用相关的文件流• 文件字节流、文件字符流—————————————————————————————文件字节输入流(按字节读取文件中的数据)FileInputStream类构造方法用文件名name创建一个文件字节输入流对象• public FileInputStream(String name)例如:FileInputStream in = new FileInputStream(“a.原创 2021-01-28 15:23:22 · 406 阅读 · 1 评论 -
File类与文件信息
????File类在java.io包中????Java使用File类创建的对象来获取文件本身的一些信息,例如:文件所在的目录 文件的长度????File类的对象不能对文件的内容进行读写File类的构造方法public File(String name)• File file1=new File("D:\\enjoy\\data1.txt");• File file2=new File("data\\data2.txt");• File file3=new F原创 2021-01-28 15:08:26 · 195 阅读 · 0 评论 -
流的概念和分类
首先简单了解一下,流的概念:Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。输入流Java程序可以打开一个从数据源(如磁盘文件、网上资源等)到程序的流,从这个流中读取数据,称为输入流只能从输入流读取数据,而不能向其中写入数据输出流Java程序可以打开到外界某个目的地的流,把程序中的数据写到这个流中,称为输出流程序只能向输出流写数据,而不能从输出流中读取数据流的分类按照流的方向分类输入流、输出流 每一个输入流几乎都能找到一个输出流和它相对原创 2021-01-28 14:41:17 · 1243 阅读 · 0 评论 -
异常的处理和自定义异常
异常处理的方式1.程序块中捕获并处理异常这种处理方式要采用try-catch-finally结构2.将方法中产生的或可能产生的异常抛出,留给调用该方法的程序块处理使用throws关键字在方法头声明try-catch-finally 结构try-catch-finally 结构捕获程序中产生的异常,然后针对不同的异常采用不同的处理程序进行处理try-catch-finally的匹配原则(1)一个catch(ExceptionType1 e1)块能够捕获所有ExceptionType原创 2021-01-28 11:34:02 · 213 阅读 · 1 评论 -
系统定义的异常类及其层次
导言:Java程序中,由于程序员的疏忽和环境因素的变化,会经常出现异常情况,为了保证程序的正常运行,Java语言专门提供了异常处理机制; Java针对各种常见的异常定义了相应的异常类,并建立了异常类体系。异常的类层次:图片来源:https://www.icourse163.org/learn/BFU-1205988807?tid=1461521444不同类别异常的含义1.Throwable类是根,是所有异常类的父类。Java中只有Throwable类及其子类的对象才能由异常处理机制进行处理。2.原创 2021-01-27 17:10:43 · 690 阅读 · 0 评论 -
数据类型的封装类
引入基本数据分装类的原因:基本数据类型不是类,不能产生对象,java引进基本数据类型的封装类,以统一的机制处理所有的数据类型整数类型的封装类byteByteshortShortintIntegerlongLong浮点类型的封装类floatFloatdoubleDouble字符类型的封装类charCharacter布尔类型封装类booleanBoolean基本数据类型封装类的变量和方法Int原创 2021-01-27 15:24:39 · 492 阅读 · 1 评论 -
异常
异常的概念什么是异常?在程序运行时打断正常程序流程的任何不正常情况称为异常导致程序发生异常的原因很多,如1.数组的下标越界 2.除法运算的除数为03.空指针访问 4.试图访问不存在的文件java异常处理机制...原创 2021-01-26 20:05:23 · 255 阅读 · 1 评论 -
TreeSet<E> 泛型类
TreeSet泛型类1.TreeSet泛型类在java.util包中2.TreeSet泛型类创建的对象称为树集创建TreeSet泛型类对象假设已经声明了学生类Student,可以创建学生树集TreeSet tree=new TreeSet ();• tree可以存储Student对象的集合。• tree可以调用add(Student s)将Student对象添加到树集中。• TreeSet泛型类的其他常用方法,请自行查阅Java API以下源代码可以创建字符串树集,并且按照字典序升序原创 2021-01-26 16:11:32 · 430 阅读 · 1 评论 -
LinkedList<E> 泛型类
LinkedList泛型类LinkedList泛型类在java.util包中该类创建的对象称为链表对象链表中的节点在内存中可以不存放在邻近的位置,而是可以置于内存中的任何位置原创 2021-01-26 15:58:29 · 663 阅读 · 1 评论 -
BigInteger类
程序有时会处理大整数,其取值超出了基本整数类型的范畴可以使用java.math包中的BigInteger类来处理,该类可以提供任意精度的整数运算BigInteger类的构造方法public BigInteger(String s)如果s中包含非法字符,会发生NumberFormatException异常public BigInteger add(BigInteger n) 返回当前对象与n之和public BigInteger subtract(BigInteger n) 返回当前对原创 2021-01-24 15:43:47 · 214 阅读 · 0 评论 -
Math类
Math类Math类在java.lang包中,使用该类时不需要import语句Math Math类是最终类,不允许其它类继承并重写它的方法Math类的方法都是静态方法,类名可以直接调用,不需要创建Math类的对象Math类的常用静态方法public static double sin(double a)Math类的常用静态方法//求正弦将sin替换为con、 tan、 asin、 acos、atan,可以求余弦、正切、反正弦、反余弦和反正切public static double toR原创 2021-01-24 15:30:33 · 428 阅读 · 1 评论 -
字符串类
String类String类在java.lang包中,使用该类时不需要import语句String类是最终类,不允许其它类继承并重写它的方法String类的对象一旦创建,只允许访问,不允许更改String 类的构造方法String(String original)• String s=new String(“hello”);• String s1=new String(s);String(char[ ] value)• char a[ ]={‘t’, ‘o’, ‘y’};• String原创 2021-01-23 15:39:57 · 410 阅读 · 0 评论 -
Object类
基础知识:1.Object类是Java中所有类的父类2.Java中的每个类都是Object类的直接或间接子类3.由于这种特殊地位,这个类中定义了所有对象都需要的状态和行为4.Object类的所有方法都是public或protected的,能被子类继承Object类中的方法可以分为两类:1.可以被子类重写 protected Object clone()• 生成当前对象的一个备份 public boolean equals(Object obj)• 比较当前对象和另外一个Object对原创 2021-01-23 11:53:07 · 277 阅读 · 1 评论 -
对象向上转型
对象的上转型定义:假设B是A的子类或者间接子类,用类B创建一个对象,并把这个对象的引用赋值给类A的一个引用A a;B b=new B(); //等价于A a=new B();a=b;对象上转型与运行时多态如果一个类有很多子类,并且这些子类都重写了父类中的某个实例方法,把子类创建的对象的引用放到父类的对象中时,就得到了该对象的一个上转型对象,这个上转型对象在调用这个实例方法时就可能具有多态性抽象类特点定义抽象类的目的是为其他的类创建一个公共的模板,让其他的类对其进行继承(原创 2021-01-21 20:24:23 · 383 阅读 · 0 评论 -
继承和多态
子类与父类•类之间的继承关系是一种由已经存在的类创建新类的机制,可以有效地实现代码的重复使用• 可以先定义一个共有属性的一般类(父类或超类),在此基础上定义新的类(子类)• 子类可以继承父类的属性和方法(子类不继承父类的构造方法),也可以定义自己独有的属性和方法• 父类可以是Java类库中的类,也可以是自己编写的类• Java不支持多重继承,即子类只能有一个父类类继承的语法格式:class 子类名 extends 父类名 { 子类的类体 }• 如果一个类的声明中没有使用关键字e原创 2021-01-19 16:31:14 · 178 阅读 · 0 评论 -
类和对象
构造方法类创建对象时,需要使用构造方法完成对象的初始化工作构造方法的名称必须与类名相同构造方法没有任何返回数据类型如果类定义中显式地给出了构造方法,系统就不会再提供默认的构造方法。一个类中可以有若干个构造方法(名称相同),但是构造方法的参数必须不同如果类中没有构造方法,系统为类定义一个默认的构造方法,该构造方法没有参数,类体为空对象的创建对象的声明:类的名字 对象名字;例如:Circle cir 此时cir是一个空对象,它不能访问成员变量和成员方法创建对象:对象名=new 构造方原创 2021-01-18 15:55:45 · 1231 阅读 · 0 评论