![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java复习笔记
我的Java复习笔记
ln栓
这个作者很懒,什么都没留下…
展开
-
java四种权限修饰符
java 权限修饰符原创 2023-02-20 19:17:35 · 908 阅读 · 0 评论 -
import使用以及静态导入
Java import原创 2023-02-20 17:11:34 · 506 阅读 · 0 评论 -
对象数组的内存解析
对象数组的内存解析原创 2023-02-20 14:37:44 · 79 阅读 · 0 评论 -
常用类——字符串相关
String 存储方式1(直接赋值):String 存储方式2(new 一个对象)练习:字符串特性1:常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。2:只要其中有一个是变量,结果就在堆中3:如果拼接的结果调用intern()方法,返回值就在常量池中String s1 = "javaEE"; String s2 = "hadoop"; String s3 = "javaEEhadoop"; String s4 = "jav原创 2021-02-01 10:11:55 · 112 阅读 · 1 评论 -
JDK5.0新增线程创建方式
创建线程的方式三:实现Callable接口。 — JDK 5.0新增与使用Runnable相比, Callable功能更强大些 相比run()方法,可以有返回值 方法可以抛出异常 支持泛型的返回值 需要借助FutureTask类,比如获取返回结果Future接口 可以对具体Runnable、Callable任务的执行结果进行取消、查询是否完成、获取结果等。 FutrueTask是Futrue接口的唯一的实现类 FutureTask 同时实现了Runnable, Future接原创 2021-01-31 11:21:36 · 83 阅读 · 0 评论 -
多线程——锁/单例设计模式之懒汉式(线程安全)/通信
释放锁的操作1:当前线程的同步方法、同步代码块执行结束。2:当前线程在同步代码块、同步方法中遇到break、return终止了该代码块、该方法的继续执行。3:当前线程在同步代码块、同步方法中出现了未处理的Error或Exception,导致异常结束。4:当前线程在同步代码块、同步方法中执行了线程对象的wait()方法,当前线程暂停,并释放锁。不会释放锁的操作1:线程执行同步代码块或同步方法时,程序调用Thread.sleep()、Thread.yield()方法暂停当前线程的执行2:线程执行同原创 2021-01-31 09:37:34 · 181 阅读 · 0 评论 -
多线程——生命周期/同步
方式一:同步代码块synchronized(同步监视器){需要被同步的代码}说明:1.操作共享数据的代码,即为需要被同步的代码。 -->不能包含代码多了,也不能包含代码少了。2.共享数据:多个线程共同操作的变量。比如:ticket就是共享数据。3.同步监视器,俗称:锁。任何一个类的对象,都可以充当锁。要求:多个线程必须要共用同一把锁。补充:在实现Runnable接口创建多线程的方式中,我们可以考虑使用this充当同步监视器。例子:synchr.原创 2021-01-30 18:05:47 · 77 阅读 · 0 评论 -
多线程——线程创建和使用
多线程的创建,方式一:继承于Thread类创建一个继承于Thread类的子类重写Thread类的run() --> 将此线程执行的操作声明在run()中创建Thread类的子类的对象通过此对象调用start()测试Thread中的常用方法:start():启动当前线程;调用当前线程的run()run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中currentThread():静态方法,返回执原创 2021-01-30 17:42:27 · 87 阅读 · 0 评论 -
多线程基本概念
基本概念:程序,进程,线程程序(program):是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process):是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域线程(thread)“进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并原创 2021-01-30 10:46:32 · 235 阅读 · 0 评论 -
用户自定义异常
**** 如何自定义异常类?***1.:继承于现有的异常结构:RuntimeException 、Exception2: 提供全局常量:serialVersionUID3: 提供重载的构造器示例:public class helloworld { public static void main(String[] args) { try { Student s = new Student(); s.regist(-1001);原创 2021-01-29 10:25:07 · 89 阅读 · 0 评论 -
异常处理——throw
/* * 异常处理的方式二:throws + 异常类型 * * 1. "throws + 异常类型"写在方法的声明处。指明此方法执行时,可能会抛出的异常类型。 * 一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常 * 类型时,就会被抛出。异常代码后续的代码,就不再执行! * * 2. 体会:try-catch-finally:真正的将异常给处理掉了。 * throws的方式只是将异常抛给了方法的调用者。原创 2021-01-28 21:13:09 · 504 阅读 · 0 评论 -
异常处理-try-catch-finally
Java提供的是异常处理的抓抛模型。1:Java程序的执行过程中如出现异常,会生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。说明:1: finally是可选的。2.使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配3:一旦try中的异常对象匹配到某一catch时,就进入catch中进行异常的处理。一旦处理完成,就跳出当前的try-catch结构(在没有写fiha原创 2021-01-28 20:44:59 · 101 阅读 · 0 评论 -
内部类
成员内部类作为类的成员的角色1:和外部类不同,Inner class还可以声明为private或protected;2: 可以调用外部类的结构3:Inner class 可以声明为static的,但此时就不能再使用外层类的非static的成员变量;成员内部类作为类的角色:1:可以在内部定义属性、方法、构造器等结构2:可以声明为abstract类 ,因此可以被其它的内部类继承3:可以声明为final的4: 编译以后生成OuterClass$InnerClass.class字节码文件(也适用于局原创 2021-01-28 16:12:31 · 79 阅读 · 0 评论 -
JAVA使用类数组错误:Exception in thread “main“ java.lang.NullPointerException
int t1,t2,t3; student a[] = new student[20]; for(int i=0;i<20;i++){ //a[i] = new student(); a[i].number=i+1; a[i].score = (int)(Math.random()*100); a[i].state = (int)(Math.random()*3+1);..原创 2021-01-24 11:18:29 · 325 阅读 · 0 评论 -
匿名对象
在 Java中匿名对象,一直比较难理解,我们先说一下匿名对象的使用情形有哪些?只使用对象一次,可以作为实际参数来传递,传递一个对象,里面就有不同的,属性方法可以调用。什么叫做匿名对象,就是指对象的名字没有,看不见。简称匿名。 int hmx = new Scanner(System.in).nextInt();上面的就是匿名对象New person,age=10;New person.getage();//打印 0.0 因为new了两个,他俩不是一起的,...原创 2021-01-24 12:25:20 · 58 阅读 · 0 评论 -
java多态性详解 及面试例题
java多态性多态分两种:(1) 编译时多态(设计时多态):方法重载。(2) 运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态)运行时多态存在的三个必要条件:一、要有继承(包括接口的实现);二、要有重写;三、父类引用指向子类对象。多态的好处:1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体转载 2021-01-25 20:17:55 · 218 阅读 · 0 评论 -
Java 包装类的使用,面试题,练习
方式一:连接运算基本数据类型(包括boolean)都可以这么做int num=10;String str=num+"";方式二:调用String重载的valueOf方法(形参是基本数据类型)(返回的是String)虽然形参是基本数据类型,但由于自动拆箱,包装类对象也可以充当float f=12.3f;String str=String.valueOf(f);//12.3Double d=new Double(12.4);String str1=String.valueOf(d);原创 2021-01-26 17:14:21 · 183 阅读 · 0 评论 -
Static关键字
static可以修饰:属性,方法,代码块,内部类使用static修饰属性,静态变量:3.1属性,按是否使用static修饰,又分为:静态属性VS非静志属性(实例变量)实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改。静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的。3.2 static修饰属性的其他说明:1:原创 2021-01-26 21:18:33 · 60 阅读 · 0 评论 -
基于Static的设计模式——单例模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的原创 2021-01-27 13:39:13 · 791 阅读 · 0 评论 -
类的成员——代码块
静态代码块:用static 修饰的代码块可以有输出语句。可以对类的属性、类的声明进行初始化操作。不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。若有多个静态的代码块,那么按照从上到下的顺序依次执行。静态代码块的执行要先于非静态代码块。(例外,在懒汉模式先执行非静态代码块)静态代码块随着类的加载而加载,且只执行一次。非静态代码块:没有static修饰的代码块7. 可以有输出语句。8. 可以对类的属性、类的声明进行初始化操作。9. 除了调用非静态的结构外,还可以调用静态原创 2021-01-27 13:48:35 · 105 阅读 · 0 评论 -
关键字final
final:最终的final可以用来修饰的结构:类、方法、变量final用来修饰一个类:此类不能被其他类所继承。比如:String类、System类、StringBuffer类final用来修饰方法:表明此方法不可以被重写比如:object类中getclass( );final用来修饰变量:此时的"变量"就称为是一个常量4.1:final修饰属性:可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化4.2: final修饰局部变量:尤其是使用final修饰形参时,表明此形参是原创 2021-01-27 14:16:53 · 99 阅读 · 0 评论 -
抽象类与抽象方法
抽象类概要:1:用abstract关键字来修饰一个类,这个类叫做抽象类。2:用abstract来修饰一个方法,该方法叫做抽象方法。抽象方法:只有方法的声明,没有方法的实现。以分号结束:比如:public abstract void talk();3:含有抽象方法的类必须被声明为抽象类。4:抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类。5:不能用abstract修饰变量、代码块、构造器;6:不能用abstr原创 2021-01-28 14:27:41 · 93 阅读 · 0 评论 -
抽象类:匿名对象匿名类
public class helloworld{ public static void main(String[] args){ man man1 = new man();//非匿名类的非匿名对象 cite(man1); cite(new man());//非匿名类的的匿名对象 person person1 = new person() { @Override public void ea原创 2021-01-27 21:05:07 · 416 阅读 · 0 评论 -
抽象类体现——模板方法设计模式
抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式。解决的问题: 当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。 换句话说,在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤已经在父类中写好了。但是某些部分易变,易变部分可以抽象出来,供不同子类实现。这就是一种模板模式。例子:abstract class Template {public原创 2021-01-27 21:58:55 · 130 阅读 · 0 评论 -
接口(interface)
接口的重要性:Java不支持多重继承。有了接口,就可以得到多重继承的效果。接口的特点:1:用interface来定义。2:接口中的所有成员变量都默认是由public static final修饰的。3:接口中的所有抽象方法都默认是由public abstract修饰的。4:接口中没有构造器。5:接口采用多继承机制。总结:接口(interface)是抽象方法和常量值定义的集合。定义格式:定义Java类的语法格式:先写extends,后写implements例如: class SubCl原创 2021-01-28 09:49:39 · 208 阅读 · 0 评论 -
接口应用——代理模式/工厂模式
概念:代理模式是Java开发中使用较多的一种设计模式。代理设计就是为其他对象提供一种代理以控制对这个对象的访问。例子:interface Network {public void browse();}// 被代理类class RealServer implements Network {@Overridepublic void browse() {System.out.println("真实服务器上网浏览信息");}}// 代理类class ProxyServer impl原创 2021-01-28 13:09:09 · 92 阅读 · 0 评论