自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 String类的常用方法

分割字符串,返回一个分割后的字符串数组。返回字符串的byte类型数组。返回指定索引处的字符。返回指定字符的索引。去除字符串两端空白。

2023-05-17 10:42:47 46

原创 面向对象的基本原则

设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。把几个功能拆分成不同的接口,比在一个接口里要更好更方便。高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能可以,想要修改不行。子类可以替换父类出现在父类能够出现的任何地方。类的功能要单一,不能包罗万象,过于杂乱。

2023-05-17 04:00:35 57

原创 什么是跨平台性?

实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就能运行Java程序。所谓跨平台性,是指Java语言编写的程序,一次编译后,可以在多个系统平台上运行。

2023-05-17 03:59:59 121

原创 Java语言的特点

(Java语言的强类型机制、异常处理、垃圾的自动收集等)(多线程机制使应用程序在同一时间并行执行多项任务)(Java语言的语法与C语言和C++语言很接近)(java虚拟机实现平台无关性)(封装、继承、多态)

2023-05-15 23:22:30 34

原创 静态变量与实例变量区别

静态变量:静态变量由于不属于任何实例对象,是属于类的,所以在内存中只会有一份,在类的加载过程中,JVM只为静态变量分配一次内存空间。实例变量:每次创建对象,都会为每个对象分配成员变量内存空间,实例变量是属于实例对象的,在内存中,创建几次对象,就有几份成员变量。

2023-05-15 23:21:57 30

原创 成员变量与局部变量的区别

局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中。当方法调用完,或者语句结束后,就自动释放。变量:在程序执行的过程中,在某个范围内其值可以发生改变的量。从本质上讲,变量其实是内存中的一小块区域。成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中。局部变量:只在某个范围内有效,一般指的就是方法、语句体内。成员变量:随着对象的创建而存在,随着对象的消失而消失。局部变量:当方法调用完,或者语句结束后,就自动释放。成员变量:方法外部,类内部定义的变量。局部变量:类的方法中的变量。

2023-05-15 23:20:31 30

原创 抽象类和接口的区别

是否使用抽象类还是接口,主要看想要实现什么样的事情,如果侧重于描述事务,应该选择抽象类,如果侧重于定义功能,建议选择使用接口。7.方法:接口中的方法都没有方法体,并且都是默认使用public abstract 修饰,不能定义静态方法。而抽象类可以有普通方法,也可以没有抽象方法,还可以定义静态方法。6.属性:接口没有普通属性,只有静态属性,并且只能用public final static 修饰,而抽象类可以有普通属性,可以有静态属性(类属性)。4.接口和抽象类都不能实例化,继承或实现的类必须实现抽象方法。

2023-05-14 17:12:59 21

原创 final、finally、finalize的区别

finalize是一个方法,属于object类的一个方法,而object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用system.gc( ) 方法的时候,由垃圾回收器调用finalize( ),回收垃圾,一个对象是否可回收的最后判断。finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。

2023-05-14 17:12:56 29

原创 Java序列化的含义、意义和使用场景

3.使用场景:所有可在网络上传输的对象都必须是可序列化的,比如RMI(remoote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错;所有需要保存到磁盘的Java对象都必须是可序列化的。2.意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序而独立存在。反序列化:从IO流中恢复对象。1.序列化:将对象写入到IO流中。

2023-05-14 17:10:22 424

原创 什么是反射?反射的作用

Java反射机制是在运行状态中,对于任意一个类,获取到类所在位置后,都能够知道这个类的所有属性和方法;这种动态获取的信息以及动态调用对象的方法的功能称为Java的反射机制。对于任意一个对象,都能够调用它的任意一个方法和属性;2.在运行时调用任意一个对象的方法,生成动态代理;4.在运行时判断任意一个类所具有的成员变量和方法。1.在运行时判断任意一个对象所属的类;3.在运行时构造任意一个类的对象;

2023-05-13 21:27:54 23

原创 面向对象三大特性

封装是把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法。继承是使用已存在的类定义作为基础建立新类的技术,新类的定义可以增加新的数据或功能,也可以用父类的功能,但不能选择性的继承父类。在Java中有两种形态可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,提高了程序的扩展性。2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。3.子类可以用自己的方式实现父类的方法。

2023-05-13 21:26:11 19

原创 线程的基本状态

处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行。4.阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态才有机会再次被CPU调用,再次进入到运行状态。3.运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才真正执行,即进入到运行状态。5.死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

2023-05-13 21:25:29 88

原创 Integer和int的区别

int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。int是java提供的8种原始数据类型之一,整型,占用4个字节。Integer是java为int提供的封装类,是引用数据类型。

2023-05-12 20:11:25 26

原创 抽象类和接口的对比

1.行为模型应该总是通过接口而不是抽象类定义,所以通常优先使用接口,尽量少用抽象类。2.选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用的功能。从设计层面来说,抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。Java8中接口中引入默认方法和静态方法,以此来减少抽象类和接口之间的差异。现在,可以为接口提供默认实现的方法了,并且不用强制子类来实现它。抽象类是用来捕捉子类的通用特性的,接口是抽象方法的集合。3.都包含抽象方法,其子类都必须覆写这些抽象方法。

2023-05-12 20:10:44 48

原创 强引用、软引用和弱引用的区别

第二次垃圾回收时会受到引用,短时间内通过弱引用取对应的数据,可以取到,当执行第二次垃圾回收时,将返回null。弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的isEnQueued方法返回对象是否被垃圾回收器标记。内存溢出之前通过代码回收的引用。软引用主要用户实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源查询数据,提升速度;只有这个引用被释放后,对象才会被释放掉,只要引用存在,垃圾回收器永远不会回收,这是最常见的New出来的对象。

2023-05-12 20:09:09 98

原创 字节流和字符流的区别

以stream结尾的都是字节流,以reader和writer结尾都是字符流,两者的区别就是读写的时候一个是按字节读写,一个是按字符。在实际应用时差不多。在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,一般选择字节流。

2023-05-11 20:09:16 20

原创 静态变量和实例变量的区别

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。在语法定义上的区别:静态变量前要加。关键字,而实例变量前则不加。

2023-05-11 20:08:44 33

原创 线程和进程的区别

2.同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进程至少包括一个线程。4.线程是轻量级的进程,它的创建与销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的。3.进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束。1.进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元。5.线程中执行时一般都要进行同步和互斥,因为它们共享同一进程的所有资源。

2023-05-11 20:07:50 26

原创 面向对象什么特性?

对于面向对象的特性,一般由两种说法:一种是三大特性,分别是封装、继承、多态,一种说法是有四大特性,封装、继承、多态、抽象。讲三大特性的时候多一些。注意,这里的提问方式是面向对象的特性,而不是Java的特性。

2023-05-10 21:25:57 22

原创 堆和栈的区别

栈中存储的是当前线程的方法调用、基本数据类型和对象的引用,栈是有序的。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。Java的内存分为两类,一类是栈内存,一种是堆内存。堆中存储的是对象的值,堆是无序的。

2023-05-10 21:24:27 38 1

原创 JVM的内存结构

每个方法在执行的时候会创建一个栈帧,存储了局部变量表,操作数栈,动态链接,方法返回地址等;每个方法从调用到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈。是当前线程所执行的字节码的行号提示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有”的内存。被所有线程共享的一块内存区域,用于存储已被虚拟机加载的类信息、常量、静态常量等。根据JVM规范,JVM内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。被所有线程共享的一块内存区域,在虚拟机启动时创建,用于存放对象实例。

2023-05-10 21:22:33 44 1

原创 JDK、JRE和JVM

(Java Development Kit)是Java开发工具箱,JDK是整个JAVA的核心,里边包含了JRE,它除了包含JRE之外还包含了一些javac的工具类,把java源文件编译成class文件,Java文件是用来运行这个程序的。(Java Virtual Machine)是Java虚拟机,JRE是JAVA运行环境,而JRE底层就是依赖于JVM,Java虚拟机用来加载类文件,JAVA中之所以有跨平台的作用,就是因为包含了JVM。三者关系:JDK包含了JRE,JRE里边包含了JVM。

2023-05-09 21:51:41 66 1

原创 Java中的基本数据类型

1(8位)4(32位)

2023-05-09 21:49:49 32 1

空空如也

空空如也

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

TA关注的人

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