自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 Java学习55-super关键字的使用

1.举例1:子类继承父类以后,对父类方法进行了重写,那么在子类中,是否还可以对父类中被重写的方法进行调用?可以!举例2:子类继承父类以后,发现子类和父类中定义了同名的属性,是否可以在子类中区分两个同名的属性?(比如子类父类都有叫做id的属性,调用时如何正确区分?当然可以,用super(详见-代码举例1)。2.super的理解: 父类的。

2024-06-13 08:34:36 615 1

原创 Java学习54-关键字this的使用

this调用构造器格式this(形参列表/也可无形参)(比如this();使用时,在类的构造器中,调用当前类中指定的构造器要求this(形参列表/也可无形参)必须声明子必须声明在当前构造器的首行结论this(形参列表/也可无形参)在构造器中最多声明一个如果一个类中声明了n个构造器,则最多有n-1个构造器可以声明有this(形参列表/也可无形参)结构(简单可理解为类似计算阶乘n!的结构,一层一层调用别人,不断计算n*(n-1)!,总得有第一个干活的人1!==1 不然成了闭环,就算不出结果了)

2024-06-08 10:54:16 844

原创 Java学习53-String类【TBC】

String类展位【TBC】

2024-06-08 10:28:30 89

原创 Java学习52-迭代器 iterator

针对集合来讲,增强for循环的底层其实调用的是 iterator 迭代器。,注意,循环体中对临时变量的修改可能不会导致原有集合或数组中元素的修改。下面这个例子,则使用传统的赋值方式,将“MM”赋值给了arr的每一个元素。4.增强for循环(for each循环)的使用(jdk5.0新特性)增强for循环的执行过程中,是将集合或数组中的元素依次赋值给。2.如何选取迭代器Iterator对象?常见的循环有 do while。3.如何实现遍历(代码实现)常见的循环有 while。常见的循环有 for。

2024-05-28 17:16:29 214

原创 Java学习51-常用类 集合类Collection>List子接口>ArrayList(主要实现类)

回答:因为上面coll定义的是一个new ArrayList(),而当判断“coll.contains”就需要调用这个元素p1所属 Person类的equal方法,而在Person类中用户定义的equals里面需要的行参是(Object o),这里就是coll,自然需要将coll里面的元素一个一个送进去都比对一遍,先是“AA”然后123然后才能轮到Person类的p1元素,所以调用了三次才出现的结果。|----- 子接口:Set:存储无序的,不可重复的数据(类似数学里说的集合,里面元素是乱的)

2024-05-27 12:04:19 951

原创 Java学习50-常用类 System类 Runtime类 Math类 BigInteger类和BigDecimal类

Integer类作为int的包装类,能存储得最大整型值为2^31-1, Long类也是有限的,最大为2^63-1.如果要表示更大的整数,基本数据类型还是包装类都无法覆盖了。java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger提供所有Java的基本整数操作运算符的对应物,并提供java.lang.Math的所有相关方法。另外,BigInteger还提供以下运算:模算术,GCD计算,质数测试,素数生成,位操作以及一些其他操作。构造器。

2024-05-20 22:39:15 862

原创 Java学习49-Comparator比较器 & Comparable接口

java想要比较基本数据类型,比如两个int可以直接用 > <!= <= >= 等进行处理,但是如果要比较Object,可以选用下面两种接口Comparable或Comparator,其中Comparable 是一个泛型接口,它有一个类型为 T 的唯一方法 compareTo(T o)。任何实现了 Comparable 接口的类的对象将被排序。

2024-05-18 22:49:49 998

原创 Java学习48-Java 流(Stream)、文件(File)和IO - 复习章节

IO的四个抽象基类:InputStream\OutputStream\Reader\Writer(实际中具体使用的都是这四个基类的子类)//如果定义为static,静态的,后续无法正常序列化,反序列化会得到null。transient//如果定义为瞬态的,后续无法正常序列化,反序列化会得到null。OutputStreamWriter输入型的字符流转化成输出型的字节流。层次2:(重点需要掌握)字符的编码和解码的过程,常用的字符集。IO流的分类(按不同方式有不同的分类,比如下面)层次1:熟悉转换流的使用。

2024-05-15 18:45:47 911

原创 Java学习47-Java 流(Stream)、文件(File)和IO - 其他流的使用

1.标准输入流System.in/标准输出流System.outSystem.in : 标准的输入流,默认从键盘输入System.out: 标准的输出流,默认从显示器输出(理解为控制台输出)System.setOut()方法和 System.setIn()方法(结合下面介绍的打印流举例)2.打印流实现将基本数据类型的数据格式转化为字符串输出。打印流:PrintStream 和 PrintWriter如果并不想从键盘输入,也不想从显示器读出,换言之,比如想要“从一个文件A读取信息,进行处理后再将信息

2024-05-14 15:26:10 895

原创 Java学习46-Java 流(Stream)、文件(File)和IO - 数据流 和 对象流的使用

Q:如果想要将内存中定义的变量(包括基本数据类型或引用数据类型)保存在文件中,怎么办?A: 可以使用数据流or对象流进行 [变量->文件] 存储。

2024-04-16 17:23:16 828

原创 Java学习45-Java 流(Stream)、文件(File)和IO - 转换流InputStreamReader/OutputStreamWriter的使用

UTF就是Unicode字符集,UTF-8,UTF-16,UTF-32是三种将数字转换到程序数据的编码方案,UTF-8是每次8个位传输数据,UTF-16是每次16个位,其中UTF-8是互联网上使用最广的一种Unicode的实现方式。在内存中有一个’a’或者一个中文汉字,他们都是按照char的方式进行存储,此时它们在内存中都是按照两个字节方式来存储的,当这个’a’存储到文件中时,就会按照文件编码的方式占用对应的存储空间,无论那种编码方式,存在文件时都只占用一个字节。当编码是GBK,它存入文件时占用两个字节。

2024-04-14 20:27:59 642

原创 Ubuntu安装的Joplin升级 如何update

用刚刚下刚刚下载的Joplin.AppImage新文件对这个路径下的Joplin.AppImage直接覆盖即可(可以留着之前的Joplin.AppImage文件,改个名字比如改成14_04_2024_Joplin.AppImage,用做备份)。等待下载完毕,直接替换ubuntu已经安装好的Joplin(目前运行的Joplin)的Joplin.AppImage执行文件即可。这样就能找到Joplin文件Joplin.AppImage安装的具体位置,本例中,查阅到Joplin.AppImage路径为。

2024-04-14 14:39:08 370

原创 Java学习44-Java 流(Stream)、文件(File)和IO - BufferedInputStream \ BufferedOutputStream 缓冲流的使用

读取:int read(char[] cbuf/byte[] buffer) : 每次将数据读入到cbuf/buffer数组中,并返回读入到数组中。写出:void write(String str)/write(char[] cbuf):将str或cbuf写出到文件中。举例:使用BufferedReader将sample1.txt中的内容复制给一个新的文件。举例:使用BufferedReader将sample1.txt中的内容复制在控制台上。第1步:创建File的对象,流的对象(包括文件流,缓冲流)

2024-04-12 17:21:03 345

原创 Java学习43-Java 流(Stream)、文件(File)和IO - FileInputStream \ FileOutputStream的使用

对于字节流(byte[]),通常是用来处理非文本文件的。但是,如果涉及到文本文件的复制操作,也可以使用字节流。非文本文件: .doc .xls .jpg .pdf .mp3 .mp4 .avi等。(适用于非文字类,比如图片/audio/video之类的)对于字符流,只能用来操作文本文件,不能用来处理非文本文件。文本文件: .txt .java .c .cpp .py等。在注意点的基础上,看其他的注意点。输出为:(图片copy成功)

2024-04-10 15:27:56 251

原创 Java学习42-Java 流(Stream)、文件(File)和IO - FileReader\FileWriter的使用

Java程序中,对于数据的输入输出以stream方式进行,可以看作是一种数据的流动。IO流中的IO是Input和Output的缩写,是非常实用的技术,用于处理设备之间的数据传输。读写文件,网络通讯等。(以下视角,都是站在程序(内存)内部角度观察的。输入Input:读取外部数据(磁盘,光盘等存储设备的数据)到程序(内存)中输出Output:将程序(内存)数据输出到磁盘,光盘等存储设备中。

2024-04-10 14:11:01 700

原创 Java学习41-Java 流(Stream)、文件(File)和IO

注意上述 File 对象表示的是一个目录,而不是一个文件,那么调用 length() 方法的结果可能因Java版本和文件系统而异。另外,对于目录调用 length() 可能会返回目录本身的大小(这通常是一个很小的值,因为目录本身只包含元数据,比如权限、时间戳和指向其内容的指针等)。上述代码不变,再次测试。File类中声明了新建,删除,获取名称,重命名等方法,并没有涉及到文件内容的读写操作。注意,最后使用删除directory的方法,需要保证directory里面是空的,否则返回false,文件夹删不掉。

2024-04-04 18:07:24 845

原创 Java学习40-Java 多线程安全:线程池

(这也是真正开发常选择的方式)线程池的好处:提高了程序执行效率(因为线程已经提前创建好了)提高了资源的复用率(因为执行完的线程并未销毁,二是可以继续执行其他的任务)可以设置相关的参数,对线程池中的线程使用进行资源管理。

2024-04-02 14:28:40 162 1

原创 Java学习39-Java 多线程安全:Callable接口

Callable接口能return数值回来,但是不能直接给Thread实例,需要引入中间的FutureTask实例.执行调用过程类似这样。补充,如果想要调出call方法那个返回值,用FutureTask的object调用get方法,即就是。Callable()使用了泛型参数,可以指明具体的call()的返回值类型,更灵活。如果在主线程中需要或许分线程call()的返回值,则此时的主线程是阻塞状态的。call()可以使用throws的方式处理异常,更灵活。call()可以有返回值,更灵活。

2024-04-02 12:49:51 227

原创 Java学习38-Java 多线程安全:线程的通信

线程通信主要涉及三个方法:wait():线程一旦调用执行此方法,就进入等待状态,同时会释放对同步监视器的调用。notify():一旦执行此方法,就会唤醒wait()线程中优先级最高的那个线程。如果被wait()得多个线程优先级相同,就随机唤醒一个)被唤醒的线程从当前被wait的位置继续执行。notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。注意:此三个方法的使用,必须是在同步代码块或同步方法中,即synchronized标记的模块。

2024-04-01 22:28:09 938

原创 Java学习37-Java 多线程安全:死锁

(lock出现的也更晚,理论上讲,后面出的功能肯定比早期的要更先进完善)比如:打麻将时候,A拿着3条在等B抛出7条 B拿着7条在等A抛3条,这俩就死锁了,谁也得不到想要的,卡在这里了。针对条件3:占用部分资源的线程再进一步申请其他资源时,如果在设计的时间内申请不到,就主动施放掉已经占用的资源。不同的线程分别占用对方需要的资源不放弃,都在等着对方放弃自己想要的同步资源,形成了线程的死锁。针对条件4:可以将资源改为线性顺序,申请资源时,先申请序号较小的,这样避免循环等待问题。综上所述,lock要更先进一些。

2024-04-01 08:29:23 322

原创 Java学习36-Java 多线程安全:懒汉式和饿汉式

懒汉式本身是非线程安全的,因为多个线程可能同时检查实例是否为null,并尝试同时创建实例,会导致出现多个实例。为了解决这个问题,需要额外的同步机制,如双重检查锁定(double-checked locking)或静态内部类等方式。而饿汉式最开始就static和final了天生就是线程安全的。懒汉式在类被创建时不立即创建实例,而是在第一次调用方法时才创建实例,实现了延迟加载(非线程安全)。饿汉式直接在最开始就直接创建完毕了(自带安全属性)。

2024-03-31 22:17:09 534

原创 Java学习35-Java 单例Singleton类

但在某些时候,允许其他类自由创建该类的对象可能造成系统性能下降(因为频繁的创建对象,会产生回收对象带来的系统开销问题)提供一个static public方法作为该类的访问点,用于创建该类的对象。此外需要使用一个static 成员变量(保存曾经创建过的那个唯一的对象)。大部分都把类的构造器定义成public,允许任何类自由创建该类的对象。该类的构造器加private修饰,这样把该类的所有构造器隐藏起来。如果我们要求一个类只能创建一个实例,则这个类被称为单例类。该类只能创建一个对象。

2024-03-31 20:34:00 290

原创 Java学习34-Java 多线程Thread 同步方法

说明:如果操作共享数据的代码完整的声明在了一个method方法中,那么我们就可以将此方法声明为同步方法。换言之,synchronized结构块全部包裹在method里,就把这个method叫同步method。说明:如果操作共享数据的代码完整的声明在了一个方法中,那么我们就可以经此方法声明为同步方法即可。第二种方式,同样的卖票例子,使用implements Thread完成同步method。弊端:在操作共享数据时,多线程其实是串行执行的,意味着浪费CPU性能低。静态的同步方法,默认同步监视器是当前类本身。

2024-03-31 18:18:10 195

原创 Java学习33-Java 多线程Thread 多线程安全问题

Thread的生命周期NEWRUNNABLEBLOCKEDWAITINGTERMINATED。

2024-03-31 17:16:03 281

原创 Java学习32-Java 多线程Thread 线程的常用方法

suspend()会导致线程暂停但不释放任何锁资源,其它线程都无法访问被它占用的锁,直到resume().下面的例子中括号里分别用了数字和来定义setPriority(),都是可以使用的,值得注意的是,对于多核CPU,资源抢占获得的优先级在运行结果处并不是十分明显。join():在线程A通过线程B调用join,表示线程A进入阻塞状态,CPU直接去执行线程B,直到线程B执行结束,线程A停止阻塞再继续执行。yield():静态方法,一旦调用,该线程直接释放CPU的执行权(getName():获取线程名。

2024-03-31 15:52:50 242

原创 Java学习31-Java 多线程Thread 线程的创建

如图所示,下面的红框左侧Method Area和Heap就是共享的,浅蓝色的Virtual Machine Stack, Native Method Stack, Program Counter Register是每个thread运行时自己独有的。一个process中的多个thread共享相同的内存单元,他们从同一个堆中分配对象,可以访问相同的变量和对象,但是多个thread操作共享的系统资源可能就会带来安全的隐患。多线程的创建方式二:用户创建实现Runnable接口的类,再在里面重写run方法。

2024-03-31 13:57:13 897

原创 ubuntu内存不足,用Swap扩展增加虚拟内存

Ubuntu内存不足,系统缓慢解决方法

2024-03-21 15:05:14 1214

原创 Java学习30-常用类 Date类

比如下面的代码sdf.parse(“2005-09-23 14:24:43”)其中sdf就是SimpleDateFormat类型的object,而sdf.parse内部的String就是按照sdf自定义的时间的格式写的String。年月日时间等都是可以前后打乱顺序写的,后面调用format()输出时,系统就会按照用户写的那个自定义格式输出。x.get(Calendar.MONTH) 注意!x.get(Calendar.HOUR) 注意!java.util.Date 类的一个方法,用于获取日期对象表示的。

2024-03-18 14:23:09 757

原创 Java学习29--常用类 包装类wrapper & 数学类Math

学生中最高分数定义为A级,和最高分相差10分以内定义为A级,和最高分相差20分以内定义为B级,和最高分相差30分以内定义为C级,其余定义为D级。如果还想使用这类方法或者API,就急需能将基本数据类型转换成对应的object的思路,这就是包装类wrapper,其实就是定义了一个基本数据类型对应的object,其中的属性定义源自那个基本数据类型。基本类型使用快速便捷,但是有些方法或API在设计时候,输入预设为object,除了喂进去object之外,没法使用。表示读取vector[i]的具体Object。

2024-03-03 18:40:22 391

原创 Java学习28--常用类 String类和Object类

类class是java中已经定义好的一些模板,用户可以按照他们的样子建立object,这些object直接具有class内的各种功能,用户就可以直接使用。内部类(之前已经讲过,见String类包装类wrapperMathFileDataRandom。

2024-03-03 15:36:29 1084

原创 Java学习27--IDEA常用快捷键

一行上下移move line up/down(same as above): Alt+Shift+up_key/down_key。可以快速生成try catch finally模块的surround with:ctrl+alt+t(我换成了alt+c)选中的结构大小写切换(我的换成了alt+u) ctrl+shift+u。退回(或前进)去前(后)一个编辑的页面 ctrl+alt+左(右)代码自动排齐 alt+l (有些电脑设置的是ctrl+alt+l)跳转去method的方法体 ctrl+alt+b。

2024-03-01 14:32:17 316

原创 Java学习26--枚举类

枚举指的是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的集合。一个简单的程序,一年四季(比较懒惰只写了两季),注意定义enum类时只允许输出,不允许输入所以没有设置set类(同时写了final关键字的variable也不能建立getter结构)。Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。valueOf() 方法也是 Enum 类的一个静态方法,它用于将给定的字符串名称转换为对应的枚举常量。

2024-02-24 20:48:52 301

原创 Java学习25--自定义异常

刚刚建立好了自定义异常class,现在来构建判断异常被激活的method。上一步建立了“通告批评公示内容”,现在来建立一个”通告批评被触发“的规则(这一步一般会出现 if XXX语句)。比如定义了一个叫做checkage的method,位于valid_age_detect class文件之内,checkage method的功能是当age超过130或者小于0时,触发刚才建立的report_age_error class,或者age为正常范围时,就打印输出“正常”。

2024-02-20 17:43:14 944

原创 Java学习24--异常

软件运行过程中的各种意料之外叫做Exception,比如要读取的文件找不到,准备联网发现没网,等着int参数来了个String注意Error和exception不一样,error错的比较猛,一般是直接把JAVA整个搞崩了,比如内存空间异常等等,JVM只好终止线程,这一般都是大错了。Exception一般是程序员脑子暂时抽风了,修修改改程序还能救回来。举例,method a 和b互相无限调用对方,陷入无限循环。运行程序,观察系统输出什么。

2024-02-19 14:07:06 708

原创 Java学习23--内部类

内部类内部类就是在一个class里面定义另一个class,比如在A class 中定义一个 B class,那么B class相对于A class来说就称为内部类,而A类相对于B类就是外部类了。1.成员内部类2.静态内部类3.局部内部类4.匿名内部类。

2024-02-16 13:58:44 203

原创 Java学习22--接口类& Lambda 表达式

Java接口(Interface)是Java编程语言中的一个非常重要的概念。它是一个完全抽象的类,用于定义一组方法,这些方法由类来实现。接口定义了一个契约,即规定了类应该具备哪些方法,但并不实现这些方法的具体细节。normal class一般的类: 只有具体 method implementing执行abstract class抽象类: 具体method implementing和abstract method implementing。

2024-02-15 18:34:06 486

原创 Java学习21--abstract抽象类

在Java中,abstract 是一个关键字,用于定义抽象类abstract class或抽象方法abstract method。abstract class是一种特殊的class,它不能用来建立具体的object,即不能实例化对象。abstract class通常用作其他类的基类,这些child class会提供abstract class中声明的abstract method的具体实现。换言之,abstract抽象类就是搭建大框架用的,各个method具体怎么执行可以不管。先把大结构弄出来再说。

2024-02-15 11:54:15 270

原创 Java学习21--abstract抽象类

在Java中,abstract 是一个关键字,用于定义抽象类abstract class或抽象方法abstract method。abstract class是一种特殊的class,它不能用来建立具体的object,即不能实例化对象。abstract class通常用作其他类的基类,这些child class会提供abstract class中声明的abstract method的具体实现。换言之,abstract抽象类就是搭建大框架用的,各个method具体怎么执行可以不管。先把大结构弄出来再说。

2024-02-14 21:19:12 438

原创 Java学习20-- static关键字总结

在Java中,static 是一个关键字,用于修饰类的成员(包括变量、方法和内部类)。静态变量(Static Variables):也称为类变量。它们不属于任何一个对象实例,而是属于类本身。静态变量在内存中只有一个副本,无论创建多少个对象实例,它们都共享这个静态变量的副本。通常,静态变量用于跟踪与类相关的某些统计信息。count++;静态方法(Static Methods):静态方法属于类,而不是类的任何特定实例。静态方法可以直接通过类名调用,而无需创建类的实例。

2024-02-14 19:14:44 322

原创 Java学习19-- 多态Polymorphism

Java中的多态(Polymorphism)是面向对象编程的三大特性之一,另外两个是封装(Encapsulation)和继承(Inheritance)。多态允许你使用一个接口来表示多种数据类型。在Java中,多态主要体现在以下几个方面:多态的主要好处是提高代码的灵活性和可扩展性。例如,你可以定义一个方法,该方法接受一个父类类型的参数,然后在运行时传递任何子类的对象。这样,你可以在不知道具体子类类型的情况下调用该方法,但方法内部会根据对象的实际类型执行相应的操作。

2024-02-14 13:54:25 492

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除