自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何通过反射得到一个类

共有三种方法:1.Class.forName(全类名) 这是一个阶段,将字节码文件加载进内存,然后返回给class对象2.类名.class:获取到类名,通过类名获取class对象---一般知道类名称才会使用3.对象.getClass:运行时阶段---》当成参数传递同一个类只能被加载一次...

2021-12-15 19:13:43 193 1

原创 String、StringBuilder(非线程安全)与StringBuffer(线程安全)

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, .

2021-12-13 20:57:00 271

原创 线程的几种状态

1.新建(NEW):新创建了一个线程对象。2.可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。4.阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入...

2021-12-13 20:53:09 930

原创 java 中 创建线程的几种方式

1、继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。package com.thread; public class FirstThreadTest extends Thread{ int i = 0; //重写run方法,run方法的方法体

2021-12-13 20:50:48 140

原创 进程与线程的区别

做个简单的比喻:进程=火车,线程=车厢线程在进程下行进(单纯的车厢无法运行) 一个进程可以包含多个线程(一辆火车可以有多个车厢) 不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘) 同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易) 进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源) 进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢) 进程可以拓展到

2021-12-13 20:46:48 53

原创 获取Class对象的三种方式

(1)class.forName("全类名"):将字节码文件加载进内存,返回给class对象。(2)类名.class: 通过类名获取class对象 ---》一般知道类名才使用(3)对象.getClass: 运行时阶段,---》当成参数传递。...

2021-09-05 20:43:44 153

原创 请简述final关键字

final修饰的变量:final修饰的变量叫做常量,只能被赋值一次,值不能变化 基本数据类型:其数值一旦在初始化之后便不能更改 引用数据类型:在对其初始化之后便不能再让其指向另一个对象,但指向该对象的内容可以改变final固定的是一个地址final修饰全局变量:必须赋值,否则变量出栈时需要修改方法区中的值,这样不符合final得到特性final修饰局部变量(存在方法区中):final修饰的局部变量可以不赋初始值,但是要想使用这个局部变量,就必须赋值final修饰的方法:不能被重写,如果...

2021-09-05 20:42:19 109

原创 什么是多态?多态实现的必要条件是什么?

同一行为具有不同的表现形式或形态的能力叫多态子类需要继承父类子类需要重写父类相关方法向上转型:父类的引用指向子类的对象

2021-09-05 20:41:06 1465

原创 抽象类能用final修饰吗?为什么

不能,抽象类要子类继承然后实现内部方法的。但是final修饰的类不能再被继承和修改。

2021-09-05 20:39:45 1139

原创 关于继承和多态

简述每一个输出的原因public class A { public String Show(D obj) { return "A and D"; } public String Show(A obj) { return "A and A"; }}public class B extends A{ public String Show(Object obj) { return "B ...

2021-09-05 20:39:01 47

原创 接口和抽象类的区别

1.一个类可以实现多个接口,但只能继承一个抽象类2.抽象类可以包含具体方法,接口的所有方法都是抽象的3.抽象类可以声明和使用字段;接口不能,但接口可以创静态的final常量4.接口的方法都是public的,抽象类的方法可以使public,private,protect或者不写5.抽象类可以定义构造函数,接口不行...

2021-08-29 23:06:42 77

原创 请简述this关键字

(1)this属性名:一个方法当中的全局变量和局部变量重名,我们的程序需要在这个方法中访问成员变量时,this关键字用来区分全局变量和方法中的参数;(2)this方法名:让类中一个方法调用类当中另外一个方法;(static->值是当前类;this->值是当前对象);(3)this():访问本类的构造器; 注意:1.不能在普通方法中使用,只能在构造方法中使用;普通方法不能调用构造方法,因为对象是调用普通方法的主体,没人指向; 2.this()在构造方法中只能是第一条语句,因为要...

2021-08-29 23:04:41 264

原创 请简述static关键字

static修饰变量:static修饰的变量属于类变量,该变量被该类所产生的所有对象共享static修饰的是方法,this修饰的是类static修饰的方法属于类方法:(1)this关键字不能在static方法中使用。(2)静态方法不能使用非静态方法(3)非静态方法能使用静态方法。(4)静态方法可以调用静态方法static代码块:static修饰的代码块在main方法之前执行,以便于优化程序,优化main方法。...

2021-08-29 23:03:57 232

原创 请简述java 128陷阱

答案就在Integer的valueOf()方法当中,如果我们的数值在-128-127之间的数值都存储在有一个catch数组当中,该数组相当于一个缓存,当我们在-128-127之间进行自动装箱的时候,我们就直接返回该值在内存中的地址,所以在-128-127之间的数值用==进行比较是相等的。而不在这个区间的数需要开辟一个新的内存空间,因此不相等...

2021-08-29 23:02:56 77

原创 接口和抽象类的区别?(5点)

(1)接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。(2) 接口里只能定义静态常量,不能定义普通成员变量,抽象类里则既可以定义普通成员变量,也可以定义静态常量。(3) 接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。(4) 接口里不能包含初始化块,但抽象类里完全可以包含初始化块。(5) 一个类最多只能有一个直接父类,包括抽象类,但一个类可以直接实现多...

2021-08-29 23:02:20 3171

原创 简述java的跨平台优势

同平台之上安装了相应版本的jvm虚拟机可运行在不同系统上,即不同的操作系统上安装了相同的JVM虚拟机,共用一个JVM虚拟机,是class的跨平台,一次编译到处运行

2021-08-29 23:01:39 306

原创 请简述java中的代理

(1)定义:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用。(2)目的:通过代理对象间接访问目标对象,防止直接访问目标对象带来系统不需要的复杂性。通过代理对原有业务进行增强。弊端:直接对目标对象修改,违背开闭原则,新建目标对象,代理对象代理的东西也会不断增多,也会违背,所以静态代理怎么做都会违背开闭原则。(3)动态代理写好之后不再需要别人帮我写实现方式:javajdk提供的一种代理方式。正常三步走方式:--》获取到类对象;--》获取到这个方法;(factory.getClass().

2021-08-29 23:00:46 87

原创 java的异常体系

异常时本身程序可以处理的错误,如:数组越界(ArrayIndexOutOfBoundsException),分为运行时异常和非运行时异常运行时异常:程序在运行期间发生的某些异常,一般情况下是由于某些逻辑错误引起的,如:数组越界非运行时异常:程序语法的角度来说:程序必须处理的异常,如果不处理,那就不能编译通过try-catch-finally:异常的处理,一旦发生异常并被try--catch捕获,异常被try--catch处理throws---抛出异常,不处理异常--》该异常的使用者解决,要么..

2021-08-29 23:00:00 46

原创 构造器特点

1.构造器与类同名2.new对象时new 后边的方法即为构造函数3.每个类中都有一个默认的不显示的无参构造器,在类中写一个构造器时则调用写的那个(覆盖掉默认的)4.构造器无返回值,有返回值的必定不是构造函数5.类中有至少一个的构造函数...

2021-08-29 22:58:47 359

原创 ==和equals()方法的区别

按基本数据类型使用和引用数据类型使用来区别:基本数据类型:只能使用==,用于判断值是否相等 引用数据类型:==用于判断地址是否相同 equals():如果是在object类里,equals方法中判断时使用的是==,比较的是地址; 但有些类如String类里,重新定义equals方法,先比较地址,如果地址不相同,然后再比较里边的内容是否相同。...

2021-08-29 22:57:45 47

原创 7.5总结

为什么计算机设计补码进行存储?原码只有加法没有减法,因此使用减法时会出现问题,因此引用了反码,而反码会出现正负0的问题(符号位不同)用两个编码实在浪费,因此出现了补码,补码计算后再转换为原码,这样0用00000000表示,之前出现问题的-0则不存在了。byte类型127+1=-128?byte为一字节8位,反码的存储范围为-127-127,补码的存储范围为-128-127,而计算机中数据用补码存储,0占据了一个正数的位置,0-127正好128个,-128--1也为128个,127+1超过了存储范围,

2021-07-05 22:44:22 53

空空如也

空空如也

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

TA关注的人

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