Java
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
Java的一些易错点(by harris)
JavaJavaJava的一些易错点(by harris)by\ harris)by harris)前言:复习JavaJavaJava时的记录的一些易错点,因为考试结束了,不太需要了,所以放到网上贡献给大家了,没有注意格式,就是按错误的顺序一路写下来的,算是对自己JavaJavaJava复习的一个回忆吧。public static void main(String[] args) { int[][] a = new int[3][]; a[0] =原创 2020-12-09 12:02:11 · 306 阅读 · 0 评论 -
2020年Java题库整理
2020年Java题库整理(WUST)前言:去我的个人博客阅读效果更好哟。传送门知识点整理:1.Java 语言具有跨平台性, 是一种面向对象的语言,程序具有可移植性,不可多继承。2.Java的标准版主要用于桌面级的应用和数据库的开发。3.main()的头定义只能为public void main,一个类中可以没有 main()方法。4.接口可以继承接口。5.静态内部类不能访问外部类的非静态成员,内部类可以被声明为 private 或 protected ,内部类可以被定义为 abstra原创 2020-11-26 13:12:27 · 4897 阅读 · 16 评论 -
Java对象流、对象序列化与反序列化
Java对象流、对象序列化与反序列化对象的序列化可以将一个对象的成员信息保存为一个datdatdat文件存到硬盘上,反序列化就是可以直接从该文件读该对象。package Exp7;import java.io.*;class PersonalInfo implements Serializable { //实体类实现接口Serializable private static final long serialVersionUID = 1L; private String na原创 2020-11-03 17:03:55 · 305 阅读 · 0 评论 -
Java控制台I/O、带缓冲的字符流I/O的示例(并与字节流I/O比较)
Java控制台I/O、带缓冲的字符流I/O的示例(并与字节流I/O比较)package Exp7;import java.io.*;public class Example7_5_3 { public static void main(String[] args) { File file; System.out.print("请输入一串字符:"); try { byte[]b = new byte[128]; //定原创 2020-11-03 16:55:48 · 407 阅读 · 0 评论 -
带缓冲的字节流I/O的示例程序
带缓冲的字节流I/O的示例程序package Exp7;import java.io.BufferedOutputStream;import java.io.DataOutputStream;import java.io.FileOutputStream;public class Example7_4_3 { public static void main(String[] args) { try { long start = System.cu原创 2020-11-03 16:42:59 · 283 阅读 · 0 评论 -
Java使用数据流DataInputStream和DataOutputStream
Java使用数据流DataInputStream和DataOutputStream流程:1.使用数据输出流,写入数据。2.使用数据输入流进行读入。package Exp7;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;public class DataStreamUse {原创 2020-11-03 16:37:02 · 816 阅读 · 0 评论 -
Java使用不带缓冲的字节流I/O实现任意文件拷贝
Java使用不带缓冲的字节流I/O实现任意文件拷贝流程:1.创建两个filefilefile文件,一个是source filesource\ filesource file,一个是target filetarget\ filetarget file。2.source filesource\ filesource file用文件输入字节流对象,target filetarget\ filetarget file用文件输出字节原创 2020-11-03 16:28:06 · 510 阅读 · 0 评论 -
Java中的AWT文字、绘图和图像功能
Java中的AWT文字、绘图和图像功能1.创建一个类包含一个静态frameframeframe成员,和panelpanelpanel(面板)成员。2.创建两个内部类分别实现绘图和加载图像的功能,将其作为面板的子类添加到frameframeframe结构里。3.绘图类重写父类panelpanelpanel的paint()paint()paint()方法。GraphicsGraphicsGraphics 类的常用方法:1.setFont()setFont()setFont()方法,设置字体格式。2.原创 2020-10-27 17:16:24 · 1525 阅读 · 1 评论 -
Java UI设计及图形功能
Java UI设计及图形功能1.抽象窗口工具集AWTAWTAWTJava.awtJava.awtJava.awt包中包括了一个完整的类集以支持GUIGUIGUI程序的设计。顶层容器FrameFrameFrame是WindowWindowWindow的子类,具有边界和标题栏设置,其大小允许调整,可以有菜单栏。1.LabelLabelLabel 产生标签,构造方法有两种:Label(String text)Label(String text,int alignment)第一个参数是定义文本内容,原创 2020-10-20 17:21:57 · 1331 阅读 · 1 评论 -
List、Stack与Queue的综合应用
List、Stack与Queue的综合应用package Exp5;/* * 综合练习:输入一个对整数进行四则运算的式子(如10+24/3-4*5+6), * 将其中的运算数和运算符顺序保存在一个List集合里(元素类型为String)。 * 涉及:ArrayList、Queue或Stack */import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import原创 2020-10-20 16:55:09 · 368 阅读 · 2 评论 -
集合Collection(List集合)与数组的区别与联系、常用List实现类的使用
集合Collection(List集合)与数组的区别与联系、常用List实现类的使用1.ListListList指定数据类型之后就只能使用一种数据类型,可以使用add(val)add(val)add(val)方法添加元素,get(pos)get(pos)get(pos)查询元素,集合长度可变,如果未使用泛型则会造成类型不安全,但是可以存放多种数据类型。2.可以用toArray()toArray()toArray()方法把listlistlist集合转换为Object[]Object[]Object[]数原创 2020-10-20 16:34:45 · 703 阅读 · 0 评论 -
Java泛型的使用
JavaJavaJava泛型的使用1.交换两个数组不使用泛型,每使用一种类型就需要重写一种方法。package Exp5;import java.util.Arrays;public class UnuseRawType{ public static void changePosition(int[]arr,int index1,int index2){ //整型数组 int tem=arr[index1]; arr[index1]=arr[index2原创 2020-10-20 16:14:07 · 288 阅读 · 0 评论 -
Java中线程的创建和使用
JavaJavaJava中线程的创建和使用package Exp4;public class Demo01 { public static void main(String[] args) { Thread thread1 = Thread.currentThread(); //获取当前线程(main 线程) //isAlive() 判断该线程是否存活 System.out.println("当前线程的名字:"+thread1.getNam原创 2020-10-13 16:32:31 · 300 阅读 · 1 评论 -
Java写入文件的操作
JavaJavaJava写入文件的操作import java.io.FileOutputStream;import java.io.IOException;public class Demo01 { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("a.txt"); // 相对路径默认在模块目录下原创 2020-10-12 22:28:56 · 739 阅读 · 0 评论 -
Java死锁的一个实例
JavaJavaJava死锁的一个实例死锁是指在两个及以上的进程在执行过程中,由于竞争资源或者彼此通信而造成的一种阻塞的现象。下面的实例就是用synchronizedsynchronizedsynchronized试图锁住两个对象。/** * 一个简单的死锁类 * 问题的提出:创建两个字符串对象a和b,再创建两个线程A和B,让每个线程都用synchronized锁住字符串(A先锁a,再去锁b; * B先锁b,再锁a),如果A锁住a,B锁住b,A就没办法锁住b,B也没办法锁住a,这时就陷入了死锁原创 2020-10-12 13:08:29 · 325 阅读 · 2 评论 -
Java中线程池的实现
JavaJavaJava中线程池的实现1.JavaJavaJava JDKJDKJDK 1.5之后自带ExecutorsExecutorsExecutors接口可以创建线程池。使用newFixedThreadPool()newFixedThreadPool()newFixedThreadPool()方法创建指定线程数量的线程池。2.可以用ExecutorServiceExecutorServiceExecutorService 实现类作为其线程池的返回值。3.执行线程的方法:submit()subm原创 2020-10-11 12:22:29 · 317 阅读 · 1 评论 -
Java线程通信的实例(消费者-商家)
JavaJavaJava线程通信的实例(消费者-书店)1.创建一个消费者线程。2.创建一个商家线程。3.创建一个BookBookBook类。为了让消费者线程和商家线程并发运行,需要使用锁对象,这里可以为BookBookBook对象作为这两个类的成员变量,然后再同步代码块下执行。消费者线程:public class Consumer extends Thread{ private Book bk; public Consumer(Book bk) { this.bk原创 2020-10-11 11:56:04 · 395 阅读 · 2 评论 -
Java中多线程中的等待唤醒使用
JavaJavaJava中多线程中的等待唤醒使用1.以顾客–商家模式为例子。2.创建两个线程:顾客,商家。3.运用ObjectObjectObject对象的wait(),notify()wait(),notify()wait(),notify()方法实现等待唤醒。4.顾客提出需求后调用wait()wait()wait()方法,让该线程进行无限休眠状态。5.进入商家线程,对顾客的需求进行反应,完成后,调用notify()notify()notify()方法,唤醒顾客线程,继续执行wait()wait原创 2020-10-10 22:59:26 · 321 阅读 · 0 评论 -
Java解决线程安全的方法:Lock锁
JavaJavaJava解决线程安全的方法:LockLockLock锁1.在实现类中创建一个ReentrantLockReentrantLockReentrantLock对象,下面使用的多态的方法。2.在可能发生线程安全问题的代码块前使用lock()lock()lock()方法。3.在可能发生线程安全问题的代码块后使用unlock()unlock()unlock()方法。import java.util.concurrent.locks.Lock;import java.util.concurre原创 2020-10-10 22:32:05 · 307 阅读 · 0 评论 -
Java实现线程安全的方法2
JavaJavaJava实现线程安全的方法2使用同步方法,在方法的前面加上关键字synchronizedsynchronizedsynchronized,然后将可能发生线程安全问题的代码块加入到里面。public class Runnableimpl implements Runnable{ Object obj =new Object(); int ticket = 100; @Override public void run() { while原创 2020-10-09 23:17:26 · 327 阅读 · 1 评论 -
Java线程安全的解决方法
JavaJavaJava线程安全的解决方法1.RunnableRunnableRunnable的实现类。2.使用synchronizedsynchronizedsynchronized关键字下的同步代码块,参数为锁对象,即可使程序只执行一个线程。public class Runnableimpl implements Runnable{ Object obj =new Object(); int ticket = 100; @Override public void r原创 2020-10-09 22:37:30 · 266 阅读 · 2 评论 -
Java中使用匿名内部类创建多线程
JavaJavaJava中使用匿名内部类创建多线程public class Test { public static void main(String[] args) { //new 父类 并重写run方法 new Thread(){ @Override public void run() { for (int i = 0; i < 10; i++) {原创 2020-10-09 15:14:21 · 305 阅读 · 0 评论 -
Java中使用Runnable接口创建多线程的优点
JavaJavaJava中使用RunnableRunnableRunnable接口创建多线程的优点1.避免单继承的局限性。一个类可以实现多个接口,从而实现多个方法 。2.增强了程序的扩展性,降低了程序的耦合性(解耦)简单来说就是将设置线程任务和开启线程分离。...原创 2020-10-08 22:33:16 · 694 阅读 · 0 评论 -
Java创建多线程的第二种方法
JavaJavaJava创建多线程的第二种方法1.定义一个RunnableRunnableRunnable的实现类,重写runrunrun方法。2.创建ThreadThreadThread对象,调用Thread(Runnable)Thread(Runnable)Thread(Runnable) 构造方法。3.使用start()start()start()方法即可实现多线程。实现类:public class Runnableimpl implements Runnable{ @Overri原创 2020-10-08 22:25:52 · 195 阅读 · 0 评论 -
Java中暂停线程的方法sleep()
JavaJavaJava中暂停线程的方法sleep()sleep()sleep()sleep()sleep()sleep()方法:使当前执行的线程在指定的毫秒数内休眠(暂时停止执行)注:sleep()sleep()sleep()方法执行时会抛出异常InterruptedExceptionInterruptedExceptionInterruptedException 需要使用try catchtry\ catchtry catch语句捕捉异常。public class Test {原创 2020-10-08 22:11:04 · 1019 阅读 · 0 评论 -
Java设置线程名称的方法
JavaJavaJava设置线程名称的方法1.子类可以直接调用父类的setName()setName()setName()方法实现设置线程名称。2.写一个含参构造函数,调用父类带参构造函数来给子类线程设置名称。ThreadThreadThread子类public class MyThread extends Thread{ public MyThread(){} public MyThread(String name){ super(name); }原创 2020-10-08 17:08:20 · 3213 阅读 · 0 评论 -
Java获取线程名称的方法
JavaJavaJava获取线程名称的方法通过getName()getName()getName()方法即可。另外:currentThread()currentThread()currentThread()是获取当前线程的引用的一种静态方法。ThreadThreadThread子类public class MyThread extends Thread{ @Override public void run() { System.out.println(getName(原创 2020-10-08 16:55:34 · 1790 阅读 · 0 评论 -
Java创建多线程的一种方法
Java创建多线程的一种方法1.建立一个ThreadThreadThread的子类。重写runrunrun方法。2.主类创建子类对象,执行start()start()start()方法的同时,执行main()main()main()方法,即实现了多线程。注:JavaJavaJava中多线程是抢占式调度,谁优先级高用谁,优先级相同就随机。子类:public class MyThread extends Thread{ @Override public void run() {原创 2020-10-07 21:53:54 · 466 阅读 · 2 评论 -
同一类中构造函数互调
同一类中构造函数互调public class Demo01 { private String name; private int num; Demo01(String a,int b){ name=a; num=b; } Demo01(String a){ this(a,0); } Demo01(int b){ num=b; } Demo01(){ th原创 2020-10-07 18:04:02 · 431 阅读 · 0 评论 -
Java配置JDK路径
JavaJavaJava配置JDKJDKJDK路径。1.下载对应版本的JDKJDKJDK。2.打开系统的环境变量。(cmdcmdcmd+controlcontrolcontrol+系统+高级+环境变量或者此电脑+属性+高级系统设置+高级+环境变量)3.添加一个JAVA_HOME值为JDKJDKJDK的目录。4.在PathPathPath下添加%JAVA_HOME%\bin5.win+r+cmdwin+r+cmdwin+r+cmd 输入java -version查看是否配置路径成功。原创 2020-10-06 23:19:48 · 531 阅读 · 0 评论 -
Java中泛型通配符的使用
JavaJavaJava中泛型通配符的使用package 泛型;import java.util.ArrayList;import java.util.Collection;public class MaInClass { public static void main(String[] args) { Collection<String> col1 =new ArrayList<>(); Collection<Intege原创 2020-10-03 14:59:11 · 337 阅读 · 0 评论 -
Java中接口泛型的使用
Java中接口泛型的使用1.接口package 泛型;public interface Interface<I> { public abstract void fun(I i);}2.实现类package 泛型;public class Impl<I> implements Interface<I>{ @Override public void fun(I i) { System.out.println(i);原创 2020-10-02 13:52:48 · 658 阅读 · 0 评论 -
Java使用泛型的方法
JavaJavaJava使用泛型的方法package 泛型;public class genericClass<E>{ public <M> void fun1(M m){ System.out.println(m); }}package 泛型;public class MaInClass { public static void main(String[] args) { genericClass<St原创 2020-10-02 13:25:30 · 318 阅读 · 0 评论 -
Java中泛型的使用
JavaJavaJava 中泛型的使用1.定义一个含有泛型的类package 泛型;public class genericClass<E>{ private E name; public E getName() { return name; } public void setName(E name) { this.name = name; }}2.主类package 泛型;public class原创 2020-10-02 09:20:20 · 311 阅读 · 0 评论 -
Java中加强for的使用
JavaJavaJava中加强for的使用与C++C++C++里的for(auto i:a)for(auto\ i:a)for(auto i:a) 类似,不过JavaJavaJava貌似没有autoautoauto,应该有别的东西代替。import java.util.ArrayList;public class Test { public static void main(String[] args) { ArrayList<String>原创 2020-10-01 22:44:55 · 294 阅读 · 0 评论 -
Java中迭代器Iterator的使用
JavaJavaJava中迭代器IteratorIteratorIterator的使用需要导包:util.Iteratorutil.Iteratorutil.Iterator主要有三个方法:booleanhasNext()boolean hasNext()booleanhasNext() 判断是否还有元素。E next()E\ next()E next() 返回迭代器的下一个元素voidremove()void remove()voidremove() 删除当前迭代器返回的最原创 2020-10-01 17:57:40 · 586 阅读 · 0 评论 -
Java中Collection 集合框架的顶层一些方法。
Java中CollectionCollectionCollection 集合框架的顶层一些方法。需要导包util.Collectionutil.Collectionutil.Collection和对应底层的实现类。boolean add()boolean\ add()boolean add()添加一个元素boolean remove()boolean\ remove()boolean remove() 删除一个元素void clear()void\原创 2020-10-01 13:50:52 · 637 阅读 · 0 评论 -
类和接口作为类的成员变量
类和接口作为类的成员变量1.学校类package 内部类;public class School { private String name; public School(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this原创 2020-09-29 20:45:03 · 404 阅读 · 0 评论 -
匿名内部类的使用方法(重要)
匿名内部类的使用方法(重要)1.先写一个接口package 内部类;public interface MyInterface { void fun();}2.主类package 内部类;public class TEST { public static void main(String[] args) { MyInterface obj = new MyInterface() { @Override publ原创 2020-09-28 21:03:56 · 425 阅读 · 0 评论 -
局部内部类调用局部变量的注意事项
局部内部类调用局部变量的注意事项package 内部类; class Outer { public void fun() { //外部类的成员方法 int a = 20; final int b = 30; class Inner { //成员方法的局部内部类 public void fun1() { //内部类的方法 //内部类调用局部变量时,局部变量必须是有效final的原创 2020-09-28 20:42:48 · 476 阅读 · 0 评论