Java初级基础
文章平均质量分 80
Java初级的基础,超详细
MrYuShiwen
能够成就别人的人才能称得上是真英雄,愿我们彼此相互成就,成为那个真英雄!
Java开发工程师,后端工程师,努力想成为架构师的小萌新;
写代码和学习新知识是一件非常有趣的事情,它即是个人爱好也是个人职业;
愿我的文章对读者有用,欢迎评论,一起进步!
如果期待更多我的知识分享,请关注我,一起成为那个了不起的人吧!
展开
-
Java架构师必经之路:类和对象的加载过程原理(上篇)
1.类加载的结论和代码演示顺序:父类静态属性(可以是对象)和静态代码块,看其在类中的先后顺序子类静态属性和静态代码块 ,看其在类中的先后顺序父类非静态属性和非静态代码块 ,看其在类中的先后顺序父类构造方法子类非静态属性和非静态代码块 ,看其在类中的先后顺序子类构造方法难点:与前面的过程分开讲解,类中的静态属性是自己,这个时候应该如何加载呢?即如下的第一行代码:class Root { public static Root s = new Root(原创 2022-05-13 10:09:17 · 1443 阅读 · 28 评论 -
必踩的坑之Java方法中形参、实参传递
首先亮明Java中方法参数传递的规则,这两点很重要:如果实参是基本类型(包括包装类型)或者String,则实参不会变(传的是值);如果实参是对象集合或者数组,则实参会改变(传的是引用)。原创 2022-03-24 12:02:13 · 5028 阅读 · 74 评论 -
Java中native方法read()可以人为的去输入-1让文件读取的时候还没到末尾提前结束读取吗?
InputStream就是Java标准库提供的最基本的输入流。它位于java.io这个包里。java.io包提供了所有同步IO的功能。要特别注意的一点是,InputStream并不是一个接口,而是一个抽象类,它是所有输入流的超类。这个抽象类定义的一个最重要的方法就是int read(),起方法在源码中定义如下:我们如下以FileInputStream类为例,来结束read()方法,在FileInputStream类中,read()方法调用了read0()方法,而read0()方法才是我们标题中提到的n原创 2021-09-26 22:58:41 · 700 阅读 · 0 评论 -
Java运算符优先级
优先级运算符结合方向描述目数1[ ]、 .、 ( )从左向右方法调用,属性获取2+(正号)、-(负号)、!、~、 ++、 --从右向左一元运算符单目3* 、/ 、%从左向右乘、除、取模(余数)运算双目4+ 、 -从左向右加、减运算双目5<<、 >>、 >>>从左向右左移位运算符、带符号右移位运算符、无符号右移位运算符双目6< 、<= 、>、 >=...原创 2021-01-14 20:45:21 · 939 阅读 · 0 评论 -
Java异常处理详解(全文干货,写得非常全,值得收藏)
一.初始Java异常对异常的理解:异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)Java程序在执行过程中所发生对异常事件可分为两类:Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError和OOM。一般不编写针对性 的代码进行处理。Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:空指针访问试图读原创 2020-11-20 13:06:53 · 2859 阅读 · 20 评论 -
Java中父类和接口或接口和接口中出现同名属性或同名同参数方法时,如何区分(全文干货)
1.父类和接口中出现同名属性/** * @Author: YuShiwen * @Date: 2020/11/19 12:35 PM * @Version: 1.0 */interface InterfaceA{ int number = 0;}class SuperClass{ int number = 1;}public class ClassA extends SuperClass implements InterfaceA{ public void p原创 2020-11-19 13:53:15 · 1861 阅读 · 2 评论 -
Java内部类细节演示
Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类内部类的分类:成员内部类(静态、非静态)和 局部内部类(方法内、代码块内、构造器内)成员内部类:一方面,作为外部类的成员:调用外部类的结构可以被static修饰可以被4种不同的权限修饰另一方面,作为一个类:类内可以定义属性、方法、构造器等可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承可以被abstract修饰/** * @Author: YuShi.原创 2020-11-19 12:28:03 · 635 阅读 · 0 评论 -
Java关于接口的使用
接口使用interface来定义Java中,接口和类是并列的两个结构如何定义接口:定义接口中的成员JDK7及以前:只能定义全局常量和抽象方法全局常量:public static final的.但是写代码时,可以省略不写,默认为public static final的抽象方法:public abstract的.但是写代码时,可以省略不写,默认为public abstract的JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法interface Person{ .原创 2020-11-18 16:50:12 · 618 阅读 · 0 评论 -
Java中抽象类的应用——模版方法的设计模式
话不多说,直接上代码,代码量少,简单易懂,相信大家认真看完会有所收获。代码示例:/** * @Author: YuShiwen * @Date: 2020/11/18 3:24 PM * @Version: 1.0 */public class TemplateMethodTest { public static void main(String[] args) { BuyAdidas adidas = new BuyAdidas(); adidas.o原创 2020-11-18 16:19:15 · 606 阅读 · 0 评论 -
Java中匿名子类 的 匿名对象、匿名子类 的 非匿名对象、非匿名类 的 匿名对象、非匿名类 的 非匿名对象
/** * @Author: YuShiwen * @Date: 2020/11/18 2:06 PM * @Version: 1.0 */public class AnonymousTest { public static void main(String[] args) { //非匿名类 的 非匿名对象,即类名为Freshman,对象名为:freshman Freshman freshman = new Freshman("Mr.Yu",18);原创 2020-11-18 15:07:47 · 1663 阅读 · 0 评论 -
Java中的final关键字
final:最终的final可以用来修饰的结构:类、方法、变量final 用来修饰一个类:此类不能被其他类所继承。比如:String类、System类、StringBuffer类final 用来修饰方法:表明此方法不可以被重写比如:Object类中getClass();final 用来修饰变量:此时的"变量"就称为是一个常量final修饰属性:可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化public class FinalTest { //原创 2020-11-17 21:54:30 · 706 阅读 · 2 评论 -
Java代码块(静态和非静态)在子父类中的执行顺序
话不多说,直接上代码:/** * @Author: YuShiwen * @Date: 2020/11/17 9:01 PM * @Version: 1.0 */class Root{ static{ System.out.println("Root static block"); } { System.out.println("Root no static block"); } public Root(){原创 2020-11-17 21:31:54 · 766 阅读 · 3 评论 -
Java初级基础之代码块
代码块的作用:用来初始化类、对象代码块如果有修饰的话,只能使用static.分类:静态代码块 和 非静态代码块1.静态代码块内部可以有输出语句随着类的加载而执行,而且只执行一次作用:初始化类的信息如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行静态代码块的执行要优先于非静态代码块的执行静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构2.非静态代码块内部可以有输出语句随着对象的创建而执行每创建一个对象,就执行一次非静态代码块作用:可以在创建对象时.原创 2020-11-17 16:29:54 · 582 阅读 · 0 评论 -
Java中static关键字的应用——单例设计模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。1.饿汉式坏处:对象加载时间过长。好处:饿汉式是线程安全的代码示例://饿汉式public class SingletonPattern01 { //1.内部创建类的对象,此对象也必须声明为静态的 private static SingletonPattern01 singleton = new SingletonPattern01(); //2.私有化类的构造器原创 2020-11-17 15:35:01 · 613 阅读 · 0 评论 -
Java中static关键字的使用
static:静态的static可以用来修饰:属性、方法、代码块、内部类使用static修饰属性:静态变量(或类变量)属性,按是否使用static修饰,又分为:静态属性 vs 非静态属性(实例变量)实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改。静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的。.原创 2020-11-17 13:55:48 · 595 阅读 · 0 评论 -
Java中包装类(Wrapper)的使用
一.8种基本数据类型对应的包装类针对八种基本数据类型定义相应的引用类型——包装类(封装类)有了类的特点,就可以调用类中的方法以下是8种基本数据类型对应的其包装类:基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublebooleanBooleancharCharacter二.包装类与基本数据类型之间的转换(拆箱与装箱、自动拆装箱)1.原创 2020-11-17 13:15:16 · 755 阅读 · 0 评论 -
Java中finalize方法
前沿:在面试过程中我们可能会被问到final、finally、finalize的区别?本篇文章将介绍finalize的简单用法。Finalize()是Object类的方法。在回收垃圾对象之前调用此方法。finalize()方法将重写以处理系统资源,执行清理活动并最大程度地减少内存泄漏。简单来说可在释放对象前进行某些操作。代码举例:...原创 2020-11-17 09:57:14 · 1727 阅读 · 0 评论 -
Java中==和equals()的区别
== 的使用:== 是运算符可以使用在基本数据类型变量和引用数据类型变量中如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体== 符号引用数据类型变量使用时,必须保证符号左右两边的变量类型一致。equals()方法的使用:是一个方法,而非运算符只能适用于引用数据类型Object类中equals()的定义:public boolean equals(O原创 2020-11-16 11:04:06 · 539 阅读 · 0 评论 -
Java重写的规定
重写的规定:方法的声明: 权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{ //方法体}约定俗称:子类中的叫重写的方法,父类中的叫被重写的方法子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符特殊情况:子类不能重写父类中声明为private权限的方法返回值类型:父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void父类被重写的方法的返回值类型是原创 2020-11-15 12:19:36 · 658 阅读 · 0 评论 -
Java中的多态性
何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)多态性的使用前提: ① 类的继承关系 ② 方法的重写多态的使用:虚拟方法调用有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,不能调用父类中没有的方法,但在运行期,我们实际执行的是子类重写父类的方法。总结:编译,看左边;运行,看右边。对象的多态性,只适用于方法(静态方法除外),不适用于属性(编译和运行都看左边)举例:/** * @Author: YuShiwen * @Da..原创 2020-11-15 12:06:24 · 569 阅读 · 0 评论 -
Java中super关键字
super理解为:父类的super可以用来调用:属性、方法、构造器super的使用:调用属性和方法我们可以在子类的方法或构造器中。通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略"super."特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用"super.属性"的方式,表明调用的是父类中声明的属性。特殊情况:当子类重写了父类中的方法以后,我们想在子类的方..原创 2020-11-15 11:49:53 · 552 阅读 · 0 评论 -
Java中this调用构造器
我们在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器构造器中不能通过"this(形参列表)"方式调用自己如果一个类中有n个构造器,则最多有 n - 1构造器中使用了"this(形参列表)"规定:"this(形参列表)"必须声明在当前构造器的首行构造器内部,最多只能声明一个"this(形参列表)",用来调用其他的构造器示例:public class ThisTest { private String name; private int ag.原创 2020-11-14 15:39:47 · 2401 阅读 · 0 评论 -
Java中package与import关键字的使用
一、package关键字的使用为了更好的实现项目中类的管理,提供包的概念使用package声明类或接口所属的包,声明在源文件的首行包,属于标识符,遵循标识符的命名规则、规范(xxxyyyzzz)、“见名知意”每"."一次,就代表一层文件目录。同一个包下,不能命名同名的接口、类。不同的包下,可以命名同名的接口、类。二、import关键字的使用在源文件中显式的使用import结构导入指定包下的类、接口声明在包的声明和类的声明之间如果需要导入多个结构,则并列写出即可可以使用"xxx.*原创 2020-11-14 15:07:50 · 891 阅读 · 0 评论 -
JavaBean是什么
根据Java白皮书,它是一个可重用的软件组件。一个bean将许多对象封装到一个对象中,这样我们就可以从多个地方访问这个对象。此外,它提供了方便的维护。所谓JavaBean,是指符合如下标准的Java类:- 类是公共的- 有一个无参的公共的构造器- 有属性,且有对应的get、set方法用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP 页面、Servlet、其他JavaBean、applet程序或者应用.原创 2020-11-14 14:04:49 · 750 阅读 · 0 评论 -
Java中4种权限修饰符的范围
一.Java中4种权限修饰符Java规定的4种权限(从小到大排列):private、缺省、protected 、public4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类即如下表:修饰符内部类同一个包不同包的子类同一个工程privateyesdefault(缺省)yesyesprotectedyesyesyespublicyesyesyesyes修饰类的话,只能使用:default(缺省)、pub原创 2020-11-14 13:43:15 · 1189 阅读 · 0 评论 -
Java中可变个数形参
jdk 5.0新增的内容具体使用:可变个数形参的格式:数据类型 … 变量名当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个,。。。可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。换句话说,二者不能共存。可变个数形参在方法的形参中,必须声明在末尾可变个数形参在方法的形参中,最多只能声明一个可变形参。import java.util.Arrays;/** * @Author: Y.原创 2020-11-14 13:04:00 · 652 阅读 · 0 评论 -
Java中属性(成员变量)与局部变量的区别
相同点:定义变量的格式:数据类型 变量名 = 变量值 ;先声明,后使用变量都有其对应的作用域不同点:在类中声明的位置的不同属性:直接定义在类的一对{}内局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量关于权限修饰符的不同属性:可以在声明属性时,指明其权限,使用权限修饰符。常用的权限修饰符:private、public、缺省、protected目前,大家声明属性时,都使用缺省就可以了。局部变量:不可以使用权限修饰符。默认初始化值的情况:属性:类的原创 2020-11-13 10:44:30 · 917 阅读 · 0 评论 -
Java数组元素的默认初始化值
数组元素是整型默认初始化值为0数组元素是浮点型默认初始化值为0.0数组元素是char型默认初始化值为0或’\u0000’,而非字符型’0’数组元素是boolean型默认初始化值为false数组元素是引用数据类型默认初始化值为null代码测试:/** * @Author: YuShiwen * @Date: 2020/11/12 7:14 PM * @Version: 1.0 */public class ArrayTest { public static void main.原创 2020-11-12 19:43:15 · 2849 阅读 · 0 评论 -
Java中break与continue关键字的区别
break和continue关键字的使用关键字使用范围循环中使用的作用(不同点)相同点break:switch-case 、循环结构中结束当前循环关键字后面不能声明执行语句continue:循环结构中结束当次循环关键字后面不能声明执行语句举例:/** * @Author: YuShiwen * @Date: 2020/11/12 2:24 PM * @Version: 1.0 */public class BreakContinueTest {原创 2020-11-12 14:53:59 · 1241 阅读 · 2 评论 -
Java初级基础之关于运算符的一些细节
一.关于++、–、算数运算符不改变数据类型我们都知道在Java中byte、short、char 它们之间做数值计算的时候计算的结果都会变成int类型,如何把一个数值简单的去加一或减一结果还是原来的数据类型呢,这个时候我们会用到++或–算数运算符,例子如下:public static void main(String[] args) { short s = 1; //s = s + 1; //编译报错,在Java中byte、short、char 它们之间做数值计算的时候计原创 2020-11-10 23:16:34 · 790 阅读 · 1 评论 -
Java三种方式交换两个变量的值
直接上代码,代码注释里有详细的说明。public class SwapTest { public static void main(String[] args) { int num1 = 10; int num2 = 20; //方式一:定义临时变量的方式 //推荐使用方式 int temp = num1; num1 = num2; num2 = temp; Syste原创 2020-11-10 22:58:13 · 729 阅读 · 1 评论 -
Java初级基础之标识符和基本数据类型
一.Java标识符1.什么是标识符标识符:凡是自己可以起名字的地方都叫标识符。比如:类名、变量名、方法名、接口名、包名等等。2.标识符的命名规则:( 如果不遵守如下的规则,编译不通过!需要大家严格遵守)由26个英文字母大小写,0-9 ,_或 $ 组成数字不可以开头。不可以使用关键字和保留字,但能包含关键字和保留字。Java中严格区分大小写,长度无限制。标识符不能包含空格。3.Java中的名称命名规范:(如果不遵循如下的规范,编译可以通过,但是建议大家遵循如下规则)包名:多单词组成原创 2020-11-09 11:36:46 · 924 阅读 · 2 评论