
java基础
_卷心菜_
一只努力鸭!
展开
-
JVM:堆
堆内存分配:package com.kss;public class jvmTest { public static void main(String[] args) { //返回虚拟机试图使用的最大内存 long max = Runtime.getRuntime().maxMemory(); //返回jvm的初始化总内存 long total = Runtime.getRuntime().totalMemory();原创 2022-04-27 20:05:46 · 167 阅读 · 0 评论 -
JVM:类加载器及双亲委派机制
类加载器及双亲委派机制1.类加载器2.双亲委派机制1.类加载器(1)Bootstrap ClassLoader(启动类加载器)(ExtClassLoader的父类)(2)Extention ClassLoader(扩展类加载器)(AppClassLoader的父类)(3)Application ClassLoader(应用程序类加载器)(4)User ClassLoader(用户自定义类加载器)通过类加载器加载、初始化一个 Car 类,并实例化,每进行一次实例化会产生不同的 Car 类对象,而通原创 2022-04-26 22:09:08 · 548 阅读 · 0 评论 -
Java中求一个数的幂次方
Java中求 m 的 n 次方不能使用 m^n,可使用 Math.pow(m, n) 来求m的n次方,求得结果为浮点类型。原创 2022-04-14 21:14:19 · 3675 阅读 · 0 评论 -
java输入输出流:对象的序列化与反序列化
序列化:把Java对象转换为字节序列的过程。 ——写对象过程反序列化∶把字节序列恢复为Java对象的过程。——读对象过程对象序列化步骤︰创建一个类,继承序列化Serializable接口创建对象将对象写入文件从文件读取对象信息对象输入流ObjectInputStream对象输出流ObjectOutputStream创建一个Goods类,实现Serializable接口:import java.io.Serializable;public class Goods imple原创 2021-11-03 20:43:36 · 296 阅读 · 0 评论 -
java输入输出流:字符流
字符输入流Reader字符输出流Writer字节字符转换流InputStreamReader和OutputStreamWriter与缓冲流一样,需要将输入输出流作为参数传入,如:FileInputStream fis = new FileInputStream("java_stream\\study.txt");InputStreamReader isr = new InputStreamReader(fis);使用字节字符转换流来读取文件study.txt中的内容的两种方式:study.原创 2021-11-03 19:43:29 · 267 阅读 · 0 评论 -
java输入输出流:缓冲流
缓冲输入流BufferedInputStream缓冲输出流BufferedOutputStream使用缓冲输入输出流可以提高读写速度。缓冲输入输出流和输入输出流的结合使用代码如下:新建一个空文件score.txt缓冲流的使用,将输入输出流对象作为参数传入:数据的写操作:public class BufferedDemo { public static void main(String[] args) { try { FileOutputStrea原创 2021-11-01 22:35:29 · 489 阅读 · 0 评论 -
java输入输出流:FileOutputStream
FileOutputStream常用方法:方法名描述public void write(int b)将指定字节写入此文件输出流将b.length个字节从指定byte 数public void write(byte[] b)组写入此文件输出流中public void write(byte[] b,int off,int len)将指定byte数组中从偏移量off开始的len个字节写入此文件输出流关闭此文件输出流并释放与此流有public void close()关的所有系统资源..原创 2021-11-01 21:06:01 · 900 阅读 · 0 评论 -
java输入输出流:FileInputStream
字节输入流:InputStream字节输出流:InputStream输入流:从输入设备中读取数据输出流:将数据写入到输出设备中FileInputStream从文件系统中的某个文件中获得输入字节用于读取诸如图像数据之类的原始字节流字节流的用途:用于读取图像数据等二进制数据从文档中读取字符串一般用字符流来完成。下面是几个读数据的方法,如果返回值为-1,则表示已经达到文件末尾!public int read() //从输入流中读取一个数据字节public int read(byt原创 2021-11-01 19:27:12 · 687 阅读 · 0 评论 -
java输入输出流:File类的常用方法
什么是文件?文件可认为是相关记录或放在一起的数据的集合。在Java中,使用java.io.File类对文件进行操作。下面是File类的一些常用方法:创建File对象有三种方式:方式一:File file1 = new File("E:\\java_code\\java_stream\\score.txt"); 方式二:File file1 = new File("E:\\java_code", "java_stream\\score.txt");方式三:File file = ne原创 2021-10-31 22:02:20 · 511 阅读 · 0 评论 -
java线程:线程间的通信
上一节写了关于银行存取款的例子,在这个例子中还存在一个问题是,当账户余额不够了怎么办?那就需要等待存入足够的钱后再处理。为了更清楚描述该类问题,用以下代码进行展示:Queue类起一个容器的作用,其中属性n表示生产者生产的数量,生产者生产一个(n+1),消费者取一个。package java_thread;public class Queue { private int n; public synchronized int getN() { System.out.p原创 2021-10-29 22:00:08 · 111 阅读 · 0 评论 -
java线程:线程同步
多线程运行问题各个线程是通过竞争CPU时间而获得运行机会的各线程什么时候得到CPU时间,占用多久,是不可预测的一个正在运行着线程在什么地方被暂停是不确定的编写银行存、取款代码:package java_thread;public class BankThread { private String account; //账号 private int balance; //账户余额 public BankThread(String account, int bala原创 2021-10-29 17:28:31 · 111 阅读 · 0 评论 -
java线程:线程的优先级
线程的优先级Java为线程类提供了10个优先级优先级可以用整数1-10表示,超过范围会抛出异常主线程默认优先级为5优先级常量MAX_ PRIORITY :线程的最高优先级10MIN_ PRIORITY :线程的最低先级1NORM_ PRIORITY :线程的默认优先级5优先级相关的方法public int getPriority() //获取线程优先级的方法public void setPriority(int newPriority) //设置线程优先级的原创 2021-10-28 22:12:04 · 1288 阅读 · 0 评论 -
java线程:join方法的使用
join方法的使用Thread类的方法,不带参数 public final void join()作用:等待调用该方法的线程结束后才能执行,是一种抢占资源的方式。没有使用join方法:package java_thread;class MyThread2 extends Thread{ public void run(){ System.out.println(getName() + "正在执行!"); }}public class JoinDemo {原创 2021-10-28 21:34:04 · 275 阅读 · 0 评论 -
java线程:sleep方法的使用
sleep方法的使用Thread类的方法 public static void sleep(long millis)作用:在指定的毫秒数内让正在执行的线程休眠(暂停执行)参数为休眠的时间,单位是毫秒一个线程,使用sleep方法:package java_thread;class MyThread1 implements Runnable { @Override public void run() { for(int i=0; i<15 ; i++){原创 2021-10-28 20:56:18 · 1971 阅读 · 0 评论 -
java线程:线程的状态和生命周期
线程的五个状态:新建(New)可运行(Runnable)正在运行(Running)阻塞(Blocked)终止(Dead)线程的生命周期一个线程从创建到启动直至运行结束这段时间就叫做它的生命周期。原创 2021-10-28 20:14:10 · 88 阅读 · 0 评论 -
java线程:实现Runnable接口创建线程
为什么要实现Runnable接口?Java不支持多继承不打算重写Thread类的其他方法和Thread类不同的是:1.需要重写Runnable接口中的run方法2.当启动线程时,需要将类名当作Thread的参数传入package java_thread;class PrintRunnable implements Runnable{ @Override public void run(){ System.out.println(Thread.current原创 2021-10-28 20:02:08 · 297 阅读 · 0 评论 -
java线程:通过Thread类创建线程(下)
package java_thread;class MyThread extends Thread{ public MyThread(String name){ super(name); } public void run(){ for(int i = 1; i <= 10; i ++){ System.out.println(getName() + "正在运行" + i); } }}pub原创 2021-10-20 20:35:16 · 225 阅读 · 0 评论 -
java线程:通过Thread类创建线程(上)
什么是进程?进程是指可执行程序并存放在计算机存储器的一个指令序列,它是一个动态执行的过程。什么是线程?线程是比进程还要小的运行单位,一个进程包含多个线程,线程可以看作一个子程序。当一个类继承Thread,它就是一个线程了。package java_thread;//继承Thread就是一个线程了class MyThread extends Thread{ public void run(){ System.out.println(getName() + "该线程正在进行原创 2021-10-20 20:19:55 · 214 阅读 · 0 评论 -
java集合:商品信息添加优化
在上一节中,向字典中添加了商品信息,其中商品编号作为字典的Key值。若重复输入了商品编号,会是如下结果:请输入三条商品信息:请输入第1条信息:请输入商品编号: s001请输入商品名称:冰箱请输入商品价格:5000请输入第2条信息:请输入商品编号: s001请输入商品名称:电视机请输入商品价格:3000请输入第3条信息:请输入商品编号:s003请输入商品名称:洗衣机请输入商品价格:6000商品的全部信息为:商品编号:s003, 商品名称:洗衣机, 商品价格:6原创 2021-10-20 19:08:02 · 282 阅读 · 0 评论 -
java集合:向字典中添加商品信息
定义商品类:package java_set;public class Goods { private String id; //商品编号 private String name; //商品名称 private double price; //商品价格 //构造方法 public Goods(String id, String name, double price){ this.id = id; this.name = name原创 2021-10-16 19:32:25 · 456 阅读 · 0 评论 -
java集合:关于对Map与HashMap的操作
在字典中添加内容并显示Map<String, String> animal = new HashMap<String, String>();System.out.println("请输入三组单词及对应的注释,并存放到HashMap中");Scanner console = new Scanner(System.in);//添加数据int i = 0;while(i<3){ System.out.println("请输入key值(单词):"); ..原创 2021-10-16 17:33:44 · 137 阅读 · 0 评论 -
java集合:删除集合中的信息
如下,在上一节中,强制类型转换之前,我们知道迭代器取出的是Cat类型:while(it.hasNext()){ c = (Cat)it.next(); //本身为Obj类型,需强制类型转换为Cat if(c.getName().equals("花花")){ flag = true; break; }}若不知道,将其强制类型转换为String型,便会报错。解决办法:引入泛型在创建的集合处和迭代器处添加:Set<Cat> set原创 2021-10-15 22:11:49 · 1263 阅读 · 0 评论 -
java集合:在集合中查找信息
在上一节创建的集合中查找“花花”的信息://查找方式:1.使用对象名去查找System.out.println("使用对象名查找花花的信息:");if(set.contains(huahua)){ System.out.println("花花找到了"); System.out.println(huahua);}else{ System.out.println("花花没找到");}输出:使用对象名查找花花的信息:花花找到了[姓名:花花, 年龄:5, 品种:英国短毛猫原创 2021-10-15 19:52:25 · 1653 阅读 · 0 评论 -
java集合:在HashSet中添加自定义类的对象
定义宠物猫类:package java_set;public class Cat { private String name; private int month; private String species; //构造方法 public Cat(String name, int month, String species) { this.name = name; this.month = month;原创 2021-09-16 16:59:26 · 1186 阅读 · 0 评论 -
java集合:使用iterator遍历集合中的元素
向集合中添加元素package java_set;import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class WordDemo { public static void main(String[] args) { //将英文单词添加到HashSet中 Set set = new HashSet(); //向集合中添加元素 ..原创 2021-09-16 10:14:45 · 367 阅读 · 0 评论 -
java集合:在list中添加自定义的类的对象
案例:公告管理需求:1.公告的添加和显示2.在指定位置处插入公告3.删除公告4.修改公告关于公告管理,会有公告类属性,公告类方法需要定义:公告类属性编号id标题title创建人creator创建时间createTime公告类方法构造方法获取和设置属性值的方法创建公告类,定义属性:package java_set;import java.util.Date;public class Notice { private int id; //ID原创 2021-09-15 23:14:52 · 5627 阅读 · 0 评论 -
java集合:在list中存储并操作字符串信息
用ArrayList存储编程语言的名称,并输出:package java_set;import java.util.ArrayList;import java.util.List;public class ListDemo1 { public static void main(String[] args) { //用ArrayList存储编程语言的名称,并输出 List list = new ArrayList(); list.add...原创 2021-09-15 22:08:01 · 1502 阅读 · 0 评论 -
java字符串:StringBuilder常用方法
String和StringBuilder的区别:前者具有不可变性,而后者不具备。建议:当频繁操作字符串时,使用StringBuilder。StringBuilder和StringBuffer:二者基本相似。StringBuffer是线程安全的,StringBuilder则没有,所以性能略高。定义一个字符串"你好",在"你好"后面添加内容,将字符串变成"你好,java!"package java_proj;public class StringBuilderDemo1 { publi.原创 2021-09-15 17:15:06 · 247 阅读 · 0 评论 -
java字符串:字符串的不可变性
通过赋值操作改变s1:package java_proj;public class StringDemo5 { public static void main(String[] args) { //String的不可变性 //String对象一旦被创建,则不能修改,是不可变的 //所谓的修改其实是创建了新的对象,所指向的内存空间不变 String s1 = "imooc"; s1 = "hello " + s1;原创 2021-09-14 18:03:59 · 173 阅读 · 0 评论 -
java字符串:等于运算符与equals方法的区别
==:地址是否相同equals:内容是否相同定义四个字符串,内容都是javapackage java_proj;public class StringDemo4 { public static void main(String[] args) { //==和equals方法的区别 //定义四个字符串,内容都是java String str1 = "java"; String str2 = "java"; Str原创 2021-09-14 16:56:13 · 69 阅读 · 0 评论 -
java字符串:getBytes()的使用
字符串和数组之间的相互转换字符串转换为byte数组package java_proj;public class StringDemo3 { public static void main(String[] args) { //字符串和byte数组之间的相互转换 //定义一个字符串 String str = new String("JAVA 编程 基础"); //将字符串转换为byte数组,并打印输出 byte[]原创 2021-09-14 16:38:16 · 292 阅读 · 0 评论 -
java字符串:String常用方法
String s1 = "java";创建一个字符串对象java,名为s1String s2 = new String();创建一个空字符串对象,名为s2String s3 = new String("java");创建一个字符串对象java,名为s3String的一些常用方法如下:charAt()方法和substring()方法char charAt(int index):获取字符串中指定位置的字符String substring(int beginIndex):获取从beginIndex位原创 2021-09-14 11:14:09 · 390 阅读 · 0 评论 -
java包装类:需要注意的点
package java_wrapper;public class WrapperTest { public static void main(String[] args) { Integer one = Integer.valueOf(100); Integer two = Integer.valueOf(100); System.out.println("one==two的结果:"+(one == two)); //1原创 2021-09-14 09:18:45 · 132 阅读 · 0 评论 -
java包装类:包装类初始值的设定
在前面章节中,已经知道基本数据类型的初始值是这样的:package java_wrapper;public class Cat { String name; int month; double weight;}package java_wrapper;public class CatTest { public static void main(String[] args) { Cat one = new Cat(); Syste原创 2021-09-13 15:27:07 · 453 阅读 · 0 评论 -
java包装类:基本数据类型和字符串之间的转换
package java_wrapper;public class WrapTestTwo { public static void main(String[] args) { //基本数据类型转换为字符串 int t1 = 2; String t2 = Integer.toString(t1); //测试 System.out.println("int类型转换为String类型对象t2="+t2);原创 2021-09-13 10:42:55 · 311 阅读 · 0 评论 -
java包装类:基本数据和包装类之间的转换
装箱:把基本数据类型的值转换为对应包装类的对象。拆箱:装箱的逆操作。package java_wrapper;public class WrapTestOne { public static void main(String[] args) { //装箱:把基本数据类型转换成包装类 //1.自动装箱 int t1 = 2; Integer t2 = t1; //2.手动装箱 Integer t3原创 2021-09-13 10:17:02 · 324 阅读 · 0 评论 -
java异常:关于方法重写时throws的注意事项
当子类重写父类抛出异常的方法时,声明的异常必须是父类方法所声明异常的同类或子类。自定义HotelAgeException异常:package java_exception;public class HotelAgeException extends Exception { public HotelAgeException(){ super("18岁以下,80岁以上的住客必须由亲友陪同"); }}父类抛出HotelAgeException的异常:package原创 2021-09-13 09:14:46 · 352 阅读 · 0 评论 -
java异常:异常链简介
异常链:有时候我们会捕获一个异常后再抛出另一个异常顾名思义就是将异常发生的原因一个传一个串起来,即把底层的异常信息传给上层,这样逐层抛出。定义testOne,testTwo,testThree方法,testTwo对testOne抛出的异常进行捕获,testThree对testTwo抛出的异常进行捕获:package java_exception;public class TryDemoFive { public static void main(String[] args) {原创 2021-09-12 22:57:43 · 1972 阅读 · 0 评论 -
java异常:自定义异常类
自定义异常类继承自Exception:package java_exception;public class HotelAgeException extends Exception { public HotelAgeException(){ super("18岁以下,80岁以上的住客必须由亲友陪同"); }}抛出自定义异常:package java_exception;import java.util.Scanner;public class TryD.原创 2021-09-12 22:27:16 · 190 阅读 · 0 评论 -
java异常:使用throw抛出异常对象
实现:当输入的整数在18~80之间时,程序正常执行,否则,使用throw抛出异常对象,以下有两种处理方案:方案一:通过try-catch包含throw语句——自己抛自己处理。package java_exception;import java.util.Scanner;public class TryDemoFour { public static void main(String[] args) { testAge(); //同类的静态方法直接调用 } /*原创 2021-09-12 21:49:23 · 3166 阅读 · 0 评论