
Java
Java
@Moota
文章仅作闲的很闲的学习记录,不想咸鱼就快跑!!!
展开
-
Java学习-学习编程语言的方法、经验和教训
首先找本《xxx从入门到精通》,下载对应的编译环境,有问题百度。对照着书籍的章节,每学一个知识点,就在电脑上编写对应的代码去实践,有问题百度。在之间,需要有毅力,有些语法点可能很难懂,那就写上几十几百次,自然而然也就会了。兴趣也很重要,如果光为了考试而去学习,一定和高数一样枯燥的。有兴趣,想着我可以学了之后用于什么地方,甚至学一段时间,可以做个小游戏,小项目。实践带来得获得感会支持你更好的学习。基础学完了后,就可以去xx平台刷些题,巩固知识点,比较好的平台有 洛谷 ,cf ,vjudge ,牛客 .原创 2021-09-22 08:12:01 · 110 阅读 · 0 评论 -
Java学习-Java的File类表示什么?有什么作用?
对文件的读操作提供了FileInputStream与FileReader两个类进行支持,对文件的写操作提供了FileOutputStream与FileWriter两个类进行支持。原创 2021-11-19 23:26:56 · 299 阅读 · 0 评论 -
Java学习-什么是对象的序列化和反序列化?Java对此提供了哪些支持?
序列化和反序列化为存储对象提供了方便。对象的序列化:又叫串行化,指的是将对象转化为特定的字符串。对象的反序列化:即将特定字符串恢复成原来的对象;代码import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import jav原创 2021-11-18 20:16:47 · 314 阅读 · 0 评论 -
Java学习-Java中的过滤流(流的装配)有什么作用?请举例说明常用的过滤流。
节点流读取或写入时没有缓冲功能,只能读取或写入字节或字符,而处理流的作用就是为节点流添加一些复杂的功能,如缓冲功能、操作(读取)各种数据类型等功能。原创 2021-11-18 15:38:22 · 200 阅读 · 0 评论 -
Java学习-字节流与字符流的转化是怎样的?Java对此提供了哪些支持?
输入字节流转为字符流需要用到inputstreamReader的构造方法输出字符流转为字节流用到OutputStreamWriterr的构造方法原创 2021-11-18 15:04:53 · 154 阅读 · 0 评论 -
Java学习-字节流InputStream和OutputStream的子类分别有哪些?与其对应的字符流分别有哪些?
原创 2021-11-18 14:55:31 · 338 阅读 · 0 评论 -
Java学习-Java中流的分类
1.分类1. 按流向分类:输入流,输出流输入即 外界数据输入到本地,输出即 把本地数据输出到其他平台。2. 按处理的数据单位分类:字符流,字节流字符流处理:2个字节的Unicode字符,分别操作字符、字符数组或字符串。字节流处理:1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,因此它对多国语言支持性比较好!如果是关系到中文(文本)的,可以用字符流。如果是关系到音频文件、图片、歌曲,就用字节流(可以处理一切)。3原创 2021-11-18 14:37:29 · 721 阅读 · 1 评论 -
Java学习-Java模拟生产者/消费者模型
角色:生产者,消费者,产品,产品仓库要求:产品仓库 定义最大容量。往产品仓库 添加 或者 删除产品,应该是线程安全的。代码//产品类class Prodcut { private String name;}//产品仓库类class ProductContainer { private final int MaxContainerSize=100; private ArrayList<Prodcut>prodcutArrayList=new A..原创 2021-11-18 13:47:39 · 145 阅读 · 0 评论 -
Java学习-Java提供了哪些同步机制来实现互斥?
Java 提供了两种锁机制来控制多个线程对共享资源的互斥访问。JVM 实现的 synchronized。JDK 实现的 ReentrantLock。原创 2021-11-18 09:06:12 · 132 阅读 · 0 评论 -
Java学习-volatile关键字有什么作用?
保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。禁止进行指令重排序。1:编译器优化重排:编译器的优化前提是在保证不改变单线程语义的情况下,对重新安排语句的执行顺序。2:指令并行重排:如果代码中某些语句之间不存在数据依赖,处理器可以改变语句对应机器指令的顺序 如:int x = 10;int y = 5;对于这种x y之间没有数据依赖关系的,机器指令就会进行重新排序。但是对于:int x = 10; int y = 5; int z.原创 2021-11-18 08:48:22 · 73 阅读 · 0 评论 -
Java学习-ThreadPoolExecutor构造器各个参数的意义
JDK源码public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, .原创 2021-11-18 08:33:00 · 399 阅读 · 0 评论 -
Java学习-FutureTask类有什么作用?它实现了哪些接口?Callable接口和Runnable接口有什么不同?
实现: FutureTask 实现了 RunnableFuture 接口,而 RunnableFuture 分别继承了 Runnable 和 Future 接口,因此 FutureTask 类既可以被线程执行,又可以拿到线程执行的结果。作用:FutrueTask 应用于多线程中异步处理并得到处理结果的场景。1、Runnable 没有返回值,而 Callable 能返回执行结果2、Callable 接口实现类中的 call 方法允许异常向上抛出,可以在内部处理,try catch。但是 Runnab.原创 2021-11-18 08:15:35 · 401 阅读 · 0 评论 -
Java学习-异常中的throws声明与throw语句的区别是什么?请举例说明。
throw:表示方法内抛出某种异常对象throws:方法的定义上使用 throws 表示这个方法可能抛出某种异常原创 2021-10-28 09:24:00 · 112 阅读 · 0 评论 -
Java学习-为什么不建议在for循环中使用“+”进行字符串拼接?
String 是 字符串常量 , 所以对 String 进行改变时,实际生成了一个新的 String 对象,然后将指针指向新的 String 对象,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,性能就会降低。...原创 2021-10-27 09:19:45 · 343 阅读 · 0 评论 -
Java学习-String与StringBuffer,StringBuilder的区别
String字符串常量,字符串长度不可变。StringBuffer字符串变量(线程安全)。StringBuilder字符串变量(非线程安全)。原创 2021-10-27 09:17:18 · 94 阅读 · 0 评论 -
Java学习-finally子句的作用是什么?
和 try-catch 捕获异常连用,用于捕获异常的结束工作。正常情况一定会执行。如果虚拟机停止或出现问题或者程序存在死循环则不执行。原创 2021-10-27 09:08:48 · 367 阅读 · 0 评论 -
Java学习-根据某业务场景自定义一个异常类,并在某场景下抛出该异常对象。
非法玩家检测class Player { private int HP = 2147483647; int getHP() { return HP; }}class MoudlePlayer { private final int MinHP = 1; private final int MaxHP = 1000; int getMinHP() { return MinHP; } int getMa原创 2021-10-21 09:31:07 · 158 阅读 · 0 评论 -
Java学习-选取RuntimeException类的五个子类,编写抛出并捕获上述子类异常的程序。
EmptyStackException类 (空堆栈异常):class A{ public static void main(String[]args){ Stack<Integer>stack = new Stack<Integer>(); try{ stack.pop(); }catch (Exception e){ e.printStackTrace(); } }..原创 2021-10-21 09:14:22 · 375 阅读 · 0 评论 -
Java学习-异常处理的两种方式
处理异常的两种方式:继续甩锅 (throws声明抛出异常):让调用者去解决。自己处理(try…catch…finally捕获异常):自己解决异常,调用者不知道。原创 2021-10-21 08:56:28 · 121 阅读 · 0 评论 -
Java学习-简述StackOverflowError和OutOfMemoryError两类错误的发生情形和原因。
StackOverflowError (栈溢出):发生原因:如果程序使用的栈深度超过虚拟机分配给线程的栈大小时,抛出该错误。OutOfMemoryError (内存溢出):发生原因:如果程序在对应栈中无法申请到足够的内存空间,则抛出该错误。栈溢出举例:class A{ public static void main(String[]args){ main(null); }}内存溢出举例:class A{ public static v原创 2021-10-21 08:45:32 · 228 阅读 · 0 评论 -
Java学习-Exception又分为checked异常和unchecked异常,请分别举例说明。
受检异常(checked exception):在编译时需要检查的异常,需要用try-catch或throws处理。非受检异常(unchecked exception):不需要在编译时处理的异常。在java中派生于Error和RuntimeException的异常都是unchecked exception。受检异常举例:class A{ public static void main(String[]args){ try(Scanner sc=new Scanne..原创 2021-10-21 08:32:12 · 263 阅读 · 0 评论 -
Java学习-Throwable的子类包含哪两类?简述Java Error类与Exception类的区别。
Throwable子类:Error:致命 异常,标识系统发生了不可控的错误。程序无法处理,只能人工介入。例如,虚拟机产生了StackOverflowError,OutOfMemoryError。Exception:非致命 异常。程序可处理。分为受编辑器检测的checked异常(受检异常)和不受编辑器检测的unchecked异常(非受检异常)。...原创 2021-10-21 08:21:32 · 177 阅读 · 0 评论 -
Java学习-抽象类与接口的异同以及两者的使用场景?
相同点:两者都是抽象类, 都不能实例化.继承两者的类或者接口, 都必须要实现已经声明的抽象方法.不同点:抽象类使用extends, 接口使用implements.类只有单继承, 接口可以多个.接口只能定义public方法,常量变量.类可以有缺省或者默认方法,接口不行.使用场景:抽象类强调继承关系.接口偏于功能的实现....原创 2021-10-19 07:49:38 · 123 阅读 · 1 评论 -
Java学习-运算符instanceof
定义: 二目运算符,左边操作元是一个 引用数据类型 ,右边操作元是一个 类或者接口 .作用: 判断某个对象是不是 属于或者继承于 某种类型.举例:class A{}class B { //extends A}class Test { public static void main(String[] args) { A a=new A(); System.out.println(a instanceof B); }}...原创 2021-10-18 11:48:27 · 82 阅读 · 0 评论 -
Java学习-运行时多态的含义是什么?有什么作用?
定义: 子类方法 重写 了父类方法。使用父类引用 指向 子类对象,再 调用某一父类中的方法 时,不同子类会 表现出不同结果 。作用: 使得调用函数具有 灵活性 。举例:class A{ protected String getClassName(){ return "A"; }}class B extends A{ @Override protected String getClassName(){ return "B";..原创 2021-10-18 11:40:58 · 70 阅读 · 0 评论 -
Java学习-组合与继承的区别以及两者的使用场景
组合与继承的区别 :继承: 是子类继承父类,父类的所有属性和方法都被子类 拥有 。组合: 是指将 new一个类 作为一个成员变量。使用场景 :当类具有从 一般到特殊 的关系时使用继承.当类需要其他类 作为工具 使用时使用组合....原创 2021-10-18 11:36:39 · 216 阅读 · 0 评论 -
Java学习-如何实现两个对象之间互发消息?
代码:class NPC1 { private String Name = "NPC1"; public String GetName(){return Name;} public void Talk(String Name) { System.out.println("Hello " + Name); }}class NPC2 { private String Name = "NPC2"; public String GetNa..原创 2021-10-18 11:31:05 · 203 阅读 · 0 评论 -
Java学习-子类对象实例化(初始化)的执行顺序
子类对象实例化(初始化)的执行顺序父类的静态成员变量和静态代码块加载,加载时按代码的先后顺序进行。子类的静态成员变量和静态代码块加载,加载时按代码的先后顺序进行。父类成员变量和方法块加载,加载时按代码的先后顺序进行。父类的构造函数加载子类成员变量和方法块加载,加载时按代码的先后顺序进行。子类的构造函数加载...原创 2021-10-18 11:17:48 · 523 阅读 · 0 评论 -
Java学习-什么是覆写?有什么作用?
定义: 如果子类中具有与父类中声明 相同的函数 ,在java中称 覆写 。作用: 通过子类的函数的 特定实现 ,实现运行时 多态性 。原创 2021-10-18 10:58:57 · 429 阅读 · 0 评论 -
Java学习-什么是重载?有什么作用?
定义: 如果一个类中有多个具有 相同名称 但 参数不同 的方法,则称为 重载 。作用: 重载提高了程序的 可读性 。原创 2021-10-18 10:54:36 · 568 阅读 · 0 评论 -
Java学习-什么是组合?有什么作用?
定义: Java中的组合是在类中实现 has-a 关系的设计技术。在Java编程中表现出来的就是:一个类使用另一个类作为它的 成员 。作用: Java中使用组合的好处是可以控制其他对象对客户端类的 可见性 ,并 仅重用 需要的东西。...原创 2021-10-18 10:51:51 · 335 阅读 · 0 评论 -
Java学习-子类对于从父类继承的哪些属性与方法是可见的?
子类继承了父类的 所有属性和方法 ,但是只有 public 和 protected 的属性和方法在子类是可见的原创 2021-10-18 10:46:33 · 114 阅读 · 0 评论 -
Java学习-Java的访问控制修饰符有哪些?各有什么访问权限?
各种访问修饰符的可访问性访问范围privatefriendly(默认)protectedpublic同一个类可访问可访问可访问可访问同一包中的其他类不可访问可访问可访问可访问不同包中的子类不可访问不可访问可访问可访问不同包中的非子类不可访问不可访问不可访问可访问...原创 2021-10-18 10:44:25 · 75 阅读 · 0 评论 -
Java学习-Java数组元素类型为基本类型和引用类型时,有什么区别?
new 与不 new 的区别。原创 2021-09-23 09:37:37 · 107 阅读 · 0 评论 -
Java学习-final修饰符都有什么作用?
修饰 变量,则该变量为 常量;修饰 函数,则该方法为 子类不可重写方法;原创 2021-09-23 09:32:26 · 192 阅读 · 0 评论 -
Java学习-类的static字段与非static字段的区别是什么?什么场景应该使用static修饰符?
static:使用该修饰符的 变量 是该类实例 共享 的变量。使用该修饰符的 函数 是该 只能 访问使用该修饰符的变量。‘使用场景:当对象中出现 共享数据 时,就应该使用 static 修饰。原创 2021-09-23 09:29:16 · 136 阅读 · 0 评论 -
Java学习-对象初始化顺序是怎样的?
答:静态语句块:在类加载到JVM时执行,由于JVM使用类的前提是类装载到JVM虚拟机,所以静态语句块首先执行,类只加载一次,静态语句块只执行一次。静态变量初始化:由于静态变量为类的所有实例所共享,不依赖于具体的对象,因此不是在对象创建时初始化,而是在类加载时初始化,初始化顺序在静态语句块之后,只执行一次。实例语句块:在构造方法前执行,每调用一次构造方法,执行一次。执行顺序在静态变量初始化之后,以成员变量初始化为参照,没有绝对的先后顺序,实际顺序取决于定义的顺序,定义在前,就在成员变量初始化前执行;定原创 2021-09-23 09:22:05 · 518 阅读 · 0 评论 -
Java学习-对象作为参数传递的特点是什么?
对象:对象引用的传递。(修改原值)基础类型:值的传递。(不修改原值)原创 2021-09-23 09:18:30 · 123 阅读 · 0 评论 -
Java学习-对象与对象引用的区别是什么?
对象:是操作的实体。对象引用:顾名思义,是引用。比如引用一句话,可以获得它的内容。而对对象的引用,就可以获得它的属性和方法。举例:Object object = new Object();object:是对象引用;new Object():创建了一个对象;一个对象可以对应多个对象引用,就像一句话可以被多次引用。...原创 2021-09-23 09:14:08 · 454 阅读 · 0 评论 -
Java学习-Java语言中可以采用什么语句跳出多重循环?
continue:跳过当层循环的剩余语句,执行下一次当层循环语句。break:结束当层循环的所有语句,执行当层循环之后语句。原创 2021-09-23 08:11:35 · 265 阅读 · 0 评论