
Java基础
Java基础
赵鹏翔
上海市东华大学在读研究生,大家共勉。
展开
-
new controller导致空指针
new controlller后会导致原controller中的自动注解失效。解决办法之一:在新controller中注解旧controller。原创 2022-12-13 14:50:09 · 338 阅读 · 1 评论 -
与、或、非、与非、或非、异或、同或
与:and或:or非:not与非:nand或非:nor异或:xor同或:xnor与:and 有1则1,否则为0或:or 有0则0,否则为1非:not 1->0 0->1与非:nand 与然后非或非:nor 或然后非异或:xor 相异为1,相同为0同或:xnor 相同为1,相异为0...原创 2021-05-05 11:51:49 · 5192 阅读 · 2 评论 -
Java对象的创建过程
Java对象的创建过程①类加载检查虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。②分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。分配方式有 “指针碰撞” 和 “空闲列表” 两种,选择那种分配方式由 Java 堆是否规整原创 2021-04-22 13:40:17 · 483 阅读 · 0 评论 -
浅拷贝VS深拷贝
浅拷贝对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝 ,此为浅拷贝 。深拷贝对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝 。...原创 2021-04-20 14:46:47 · 78 阅读 · 0 评论 -
获取键盘输入常用的两种方法
获取键盘输入常用的两种方法1:通过 ScannerScanner input = new Scanner(System.in);String s = input.nextLine();input.close();2:通过 BufferedReaderBufferedReader input = new BufferedReader(new InputStreamReader(System.in));String s = input.readLine();...原创 2021-04-19 23:01:27 · 654 阅读 · 0 评论 -
java序列化详解
java序列化详解一、序列化与反序列化序列化:指堆内存中的java对象数据,通过某种方式把对存储到磁盘文件中,或者传递给其他网络节点(网络传输)。这个过程称为序列化,通常是指将数据结构或对象转化成二进制的过程。反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程二、序列化的作用(涉及到二进制传输)① 想把内存中的对象保存到一个文件中或者数据库中时候;② 想用套接字在网络上传送对象的时候;③转载 2021-04-19 22:59:40 · 265 阅读 · 0 评论 -
关于 final 关键字的一些总结
关于 final 关键字的一些总结final 关键字主要用在三个地方:变量、方法、类。1.对于一个 final 变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。2.当用 final 修饰一个类时,表明这个类不能被继承。final 类中的所有成员方法都会被隐式地指定为 final 方法。3.使用 final 方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的 Java原创 2021-04-19 22:12:53 · 159 阅读 · 0 评论 -
hashCode 与 equals
hashCode 与 equals面试官可能会问你:“你重写过 hashcode 和 equals 么,为什么重写 equals 时必须重写 hashCode 方法?”hashCode()介绍hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个 int 整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在 JDK 的 Object.java 中,这就意味着 Java 中的任何类都包含有 hashCode() 函数。散列表存储的是键值对(key-v原创 2021-04-19 21:43:49 · 501 阅读 · 0 评论 -
==和equals区别
==和equals区别注意,最好讲清楚equals为什么比较的是值= = : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型= =比较的是值,引用数据类型 = = 比较的是内存地址)。equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:情况 1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“= =”比较这两个对象(地址)。情况 2:类覆盖了 equals() 方法。一般,我们都覆盖原创 2021-04-19 21:29:10 · 100 阅读 · 0 评论 -
构造方法有哪些特性?
构造方法的特性1.名字与类名相同。2.没有返回值,但不能用 void 声明构造函数。3.生成类的对象时自动执行,无需调用。若一个类没有声明构造方法,该程序能正确执行吗构造方法主要作用是完成对类对象的初始化工作。可以执行。因为一个类即使没有声明构造方法也会有默认的无参构造方法。...原创 2021-04-19 20:48:55 · 4889 阅读 · 0 评论 -
Java--对象实体与对象引用有何不同
Java–对象实体与对象引用有何不同通过new 创建对象实例(对象实例在堆内存中),对象引用指向对象实例(对象引用存放在栈内存中)。一个对象引用可以指向 0 个或 1 个对象(一根绳子可以不系气球,也可以系一个气球);一个对象可以有 n 个引用指向它(可以用 n 条绳子系住一个气球)。...原创 2021-04-19 20:41:11 · 1071 阅读 · 0 评论 -
成员变量与局部变量的区别有哪些?
成员变量与局部变量的区别有哪些?1.从语法形式上看:成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰。2.从变量在内存中的存储方式来看:如果成员变量是使用 static 修饰的,那么这个成员变量是属于类的,如果没有使用 static 修饰,这个成员变量是属于实例的。对象存于堆内存,如果局部变量类型为基本数据原创 2021-04-19 20:24:05 · 1439 阅读 · 0 评论 -
Java中子类调用父类构造方法目的、排错
Java中子父类构造方法Java 程序在执行子类的构造方法之前,如果没有用 super() 来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super() 来调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上无参构造方法。...原创 2021-04-19 18:39:19 · 744 阅读 · 0 评论 -
重载和重写的区别
重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法原创 2021-04-19 18:17:45 · 113 阅读 · 0 评论 -
关于 JVM JDK 和 JRE 最详细通俗的解答
JVMJava 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。(所以跨平台)什么是字节码?采用字节码的好处是什么?在 Java 中,JVM 可以理解的代码就叫做 字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java转载 2021-04-19 16:59:09 · 126 阅读 · 0 评论 -
Java 语言有哪些特点
Java 语言有哪些特点简单易学;面向对象(封装,继承,多态);平台无关性( Java 虚拟机实现平台无关性)跨平台;可靠性;安全性;支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便);编译与解释并存;...原创 2021-04-19 16:42:25 · 237 阅读 · 0 评论 -
面向对象和面向过程的区别及面试问答
面向对象和面向过程的区别面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。面向对象 :面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低。面试问答:Java作为一种编程语言性能不高的原因是否是因为原创 2021-04-19 16:30:13 · 2626 阅读 · 0 评论 -
Java的四种引用类型通俗易懂
Java的四种引用类型通俗易懂⽆论是通过引⽤计数法判断对象引⽤数量,还是通过可达性分析法判断对象的引⽤链是否可达,判定对象的存活都与“引⽤”有关。JDK1.2之前,Java中引⽤的定义很传统:如果reference类型的数据存储的数值代表的是另⼀块内存的起始地址,就称这块内存代表⼀个引⽤。JDK1.2以后,Java对引⽤的概念进⾏了扩充,将引⽤分为强引⽤、软引⽤、弱引⽤、虚引⽤四种(引⽤强度逐渐减弱)强引⽤(StrongReference)以前我们使⽤的⼤部分引⽤实际上都是强引⽤,这是使⽤最普遍的原创 2021-04-16 21:19:37 · 311 阅读 · 0 评论 -
静态方法内调用非静态 整理
静态⽅法内调⽤⼀个⾮静态成员是⾮法的由于静态⽅法可以不通过对象进⾏调⽤,因此在静态⽅法⾥,不能调⽤其他⾮静态变量,也不可以访问⾮静态变量成员。静态方法中不能调用非静态方法准确地说是不能直接调用non-static方法。但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-static方法。在主函数(static方法)中我们经常创建某个类的实例,再利用其引用变量调用它的非静态方法。示例//StaticMethodTest.java//A ststic method cann转载 2021-04-16 20:54:04 · 335 阅读 · 0 评论 -
接口和抽象类的区别
接口和抽象类的区别接⼝的⽅法默认是 public,所有⽅法在接⼝中不能有实现(Java 8 开始接⼝⽅法可以有默认实现),⽽抽象类可以有⾮抽象的⽅法。接⼝中除了 static、final 变量,不能有其他变量,⽽抽象类中则不⼀定。⼀个类可以实现多个接⼝,但只能实现⼀个抽象类。接⼝⾃⼰本身可以通过 extends 关键字扩展多个接⼝。接⼝⽅法默认修饰符是 public,抽象⽅法可以有 public、protected 和 default 这些修饰符(抽象⽅法就是为了被重写所以不能使原创 2021-04-16 20:40:36 · 221 阅读 · 0 评论 -
反射整理
**反射**前提:拿到目标字节码的Class: .class文件(字节码文件)解释JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.使用功能”.class”来创建Class对象的引用时,不转载 2021-04-16 19:51:11 · 93 阅读 · 0 评论 -
栈和堆整理
JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。基本,栈stack和堆heap这两个概念很重要。一、先说一下最基本的要点基本数据类型、局部变量都是存放在栈内存中的,用完就消失。new创建的实例化对象及数组,是存放在堆内存中的,用完之后靠垃圾回收机制不定期自动消除。二、先明确以上两点,以下示例就比较好理解了示例1main() int x=1;show () int x=2主函数main()中定义变量int转载 2021-03-31 16:09:45 · 118 阅读 · 0 评论 -
类修饰符
1、 类的修饰符分为:可访问控制符和非访问控制符两种。可访问控制符是:公共类修饰符 public protect非访问控制符有:抽象类修饰符 abstract ;最终类修饰符 final1、公共类修饰符 public : Java 语言中类的可访问控制符只有一个: public 即公共的。每个 Java 程序的主类都必须是 public 类作为公共工具。供其它类和程序使用的应定义为 public 类。 2 、抽象类修饰符 abstract :凡是用 abstract 修饰符修饰的类,被称为抽象类。转载 2021-03-31 16:49:21 · 6185 阅读 · 0 评论