Java
java基础入门到项目开发
zhaoz21
只争朝夕 不负韶华
展开
-
==和equals的区别
== 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址;equals的话,它是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也是==;具体要看自定义类里有没有重写Object的equals方法来判断;通常情况下,重写equals方法,会比较类中的相应属性是否都相等。...原创 2021-02-23 21:49:44 · 152 阅读 · 2 评论 -
Object类的所有方法
1.构造方法public Object(){ }2、所有方法(1)clone() protected native Object clone() throws CloneNotSupportedException;创建并返回此对象的副本。(2)equals(Object obj) public boolean equals(Object obj) { return (this == obj); }指示一些其他对象是否等于此原创 2021-02-23 21:34:43 · 621 阅读 · 0 评论 -
instanceof关键字
x instanceof A:检验x是否为类A的对象,返回值为boolean型。原创 2021-02-23 20:28:53 · 104 阅读 · 0 评论 -
多态的使用
1、多态性一个事物的多种形态。2、什么是多态性对象的多态性:父类的引用指向子类的对象或子类的对象赋给父类的引用。3、多态的使用:虚拟方法调用有了对象的多态以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。总结:编译看左边,运行看右边。4、多态性的前提:(1)类的继承关系;(2)方法的重写。5、对象的多态性,只适用于方法,不适用于属性。方法的编译看左边,运行看右边;属性的编译和运行都看左边。扩展:虚拟方法子类中定义了与父类同名同参数的方法,在多原创 2021-02-23 20:24:25 · 864 阅读 · 0 评论 -
子类对象实例化过程
1、从结果上来看:( 继承性)子类继承父类以后,就获取了父类中声明的属性或方法。创建子类的对象,在堆空间中,就会加载所有父类中声明的属性。2、从过程上来看:当我们通过子类的构造器创建子类对象时,我们一定会直接或间接的调用其父类的构造器,进而调用父类的父类的构造器,… ,直到调用了java.lang.Object类中空参的构造器为止。...原创 2021-02-23 20:12:03 · 134 阅读 · 0 评论 -
super关键字的使用
1、super理解为:父类的2、super可以用来调用:属性、方法、构造器3、super的使用:调用属性和方法(1)我们可以在子类的方法或构造器中,通过使用“super.属性”或“super.方法”的方式,显示的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略“super.”。(2)特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显示的使用“super.属性”的方式,表明调用的是父类中声明的属性。(3)特殊情况:当子类重写了父类中的方法以后,我们想原创 2021-02-22 20:34:15 · 115 阅读 · 0 评论 -
重写相关规定
重写的定义:方法的声明:权限修饰符 返回值类型 方法名(形参列表){//方法体}约定俗称:子类中叫重写的方法,父类中的叫被重写的方法子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同。子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符。特殊情况:子类不能重写父类中声明为private权限的方法。返回值类型:(1)父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void。(2)父类被重写的方法的返回值类型是A类型,则子类重原创 2021-02-22 19:38:18 · 920 阅读 · 0 评论 -
Debug调试常用操作
操作作用step into 跳入(f5)进入当前行所调用的方法中step over 跳过(f6)执行完当前行的语句,进入下一行step return 调回(f7)执行完当前行所在的方法,进入下一行drop to frame回到当前行所在方法的第一行resume 恢复执行完当前行所在断点的所有代码,进入下一个断点,如果没有就结束...原创 2021-02-21 18:30:36 · 190 阅读 · 0 评论 -
MVC设计模式
MVC设计模式,将整个程序分为三个层次:视图模型层(view),控制器层(controller),与数据模型层(model)。这种将程序输入输出、数据处理,以及数据的展示分离开来的设计模式使程序结构变的灵活而且清晰,同时也描述了程序各个对象间的通信方式,降低了程序的耦合性。模型层 model 主要处理数据数据对象封装 model.bean/domain数据库操作类 model.dao数据库 model.db视图层 view 显示数据相关工具类 view.utils自定义view view原创 2021-02-17 11:10:00 · 144 阅读 · 1 评论 -
JDK中主要的包介绍
1、java.lang包含一些Java语言的核心类,如String、Math、Integer、 System和Thread,提供常用功能。2、java.net包含执行与网络相关的操作的类和接口。3、 java.io包含能提供多种输入/输出功能的类。4、 java.util包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。5、java.text包含了一些java格式化相关的类。6、 java.sql包含了java进行JDBC数据库编程的相关类/接口。7、原创 2021-02-17 10:50:21 · 877 阅读 · 0 评论 -
this关键字的使用
1、this可以用来修饰属性、方法、构造器2、this修饰属性和方法:this理解为当前对象或当前正在创建的对象(构造器中的this)在类的方法中,我们可以使用“this.属性”或“this.方法”的方式,调用当前属性或方法。但是,通常情况下,我们都选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名时,我们必须显示的使用“this.变量”的方式,表明此变量是属性,而非形参。3、this调用构造器(解决冗余问题)(1)在类的构造器中可以显式的使用“this(形参列表)”方式,调用类中原创 2021-02-16 16:21:46 · 366 阅读 · 1 评论 -
UML类图
1、+表示public类型,-表示private类型,#表示protected类型;2、方法的写法:方法的类型(+、-)方法名(参数名:参数类型):返回值类型。原创 2021-02-16 11:27:03 · 95 阅读 · 0 评论 -
JavaBean
1、JavaBean是一种Java语言写成的可重用组件。2、所谓javaBean,是指符合如下标准的Java类:(1)类是公共的;(2)有一个无参的公共的构造器;(3)有属性,且有对应的get、set方法。3、用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而原创 2021-02-16 11:01:20 · 85 阅读 · 0 评论 -
四种访问权限修饰符
原创 2021-02-12 14:14:58 · 381 阅读 · 1 评论 -
递归(recursion)方法
1、递归方法:一个方法体内调用它自身。public class RecursionTest { public static void main(String[] args) { RecursionTest recursionTest = new RecursionTest(); int sum = recursionTest.getSum(3); System.out.println(sum);//6 } public int ge原创 2021-02-12 10:01:55 · 222 阅读 · 0 评论 -
打印char型数组和打印int型数组的区别
打印int型数组,输出的结果是地址值;打印char型数组输出的结果为遍历数组的结果。 int [] arr=new int[]{1,2,3}; System.out.println(arr);//[I@7f31245a char [] arr1=new char[]{'a','b','c'}; System.out.println(arr1);//abc主要原因是,打印int型数组时调用的底层方法为: public void pr原创 2021-02-10 15:48:53 · 869 阅读 · 0 评论 -
方法的形参的传递机制:值传递
1、如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。在实现交换两个值的功能时,会出现交换失败的情况。2、如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。...原创 2021-02-10 14:42:50 · 292 阅读 · 0 评论 -
通过内存解析理解变量的赋值
变量的赋值可分为基本数据类型变量的赋值和引用数据数据类型变量的赋值。1、如果变量是基本数据类型,此时赋值的是变量所保存的数据值。2、如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。(引用数据类型的变量值要么是null,要么是地址值)基本数据类型变量赋值的内存解析引用数据类型变量赋值的内存解析...原创 2021-02-10 11:13:09 · 329 阅读 · 0 评论 -
JDK5.0新增内容-可变个数形参
1、可变个数形参格式:数据类型 … 变量名 public void test(String... strs) { }2、当调用可变个数形参的方法时,传入的参数可以是0个、1个、2个… public static void main(String[] args) { Person p = new Person(); p.test("1"); p.test("1", "2"); p.test("1", "2", "3");原创 2021-02-10 10:31:41 · 135 阅读 · 2 评论 -
匿名对象
1、定义我们创建的对象,没有显式的赋给一个变量名,即为匿名对象。2、特征匿名对象只能调用一次。3、使用Person p=new Person();p.feed(new Dog())原创 2021-02-09 18:44:50 · 62 阅读 · 0 评论 -
对象数组的内存解析
原创 2021-02-09 18:30:20 · 182 阅读 · 0 评论 -
万事万物皆对象
1、在java语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构。Scanner,String等文件:File网络资源:URL2、涉及到java语言与前端html、后端的数据库交互时,前后端的结构在java层面交互时,都体现为类、对象。...原创 2021-02-09 18:05:55 · 127 阅读 · 1 评论 -
JVM内存结构
编译完源程序以后,生成一个或多个字节码文件。我们使用JVM中的类的加载器和解释器对生成的字节码文件进行解释运行。意味着,需要将字节码文件对应的类加载到内存中,涉及到内存解析。内存解析在运行时出现。堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。补充:对象的属性(非static的)加载在堆空间中。栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。局部变量表存放了编译期可知原创 2021-02-09 17:30:50 · 66 阅读 · 0 评论 -
return关键字的使用
1、使用范围:使用在方法体中2、作用:(1)结束方法 return;(2)针对有返回值类型的方法,使用return 数据方法返回所要的数据3、注意点:return关键字后面不可以声明执行语句原创 2021-02-09 15:01:14 · 487 阅读 · 0 评论 -
成员变量和局部变量的区别
1、在类中声明位置不同成员变量(属性):直接定义在类的一对{}内。局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量。2、权限修饰符的不同成员变量:可以在声明成员变量时,指明其权限,使用权限修饰符。常用的权限修饰符:private、public、default、protected局部变量:不可以使用权限修饰符。3、默认初始化值的情况成员变量:类的属性,根据其类型,都有默认初始化值。初始化值同数组的默认初始化值。整型(byte、short、int、long):0浮点型原创 2021-02-09 14:28:50 · 1842 阅读 · 0 评论 -
对象的内存解析
原创 2021-02-09 11:59:38 · 92 阅读 · 0 评论 -
数组中常见的异常,两种
1、数组脚标越界异常(ArrayIndexOutOfBoundsException)2、空指针异常(NullPointerException)原创 2021-02-08 19:49:30 · 429 阅读 · 2 评论 -
操作数组的工具类Arrays常见方法
java.util.Arrays 类为操作数组的工具类,包含了用来操作数组(比如排序和搜索)的各种方法。1、Arrays.equals(arr1,arr2);源码: public static boolean equals(int[] a, int[] a2) { if (a==a2) return true; if (a==null || a2==null) return false; int l原创 2021-02-08 19:21:55 · 171 阅读 · 0 评论 -
冒泡排序
public static void main(String[] args) { //冒泡排序 int[] arr = new int[]{-12, -2, 21, 21, 34, 56, 76, 89}; for (int i = 0; i < arr.length - 1; i++) {//比较第几大轮 for (int j = 0; j < arr.length - 1 - i; j++) {//每个元素比较...原创 2021-02-08 17:18:58 · 77 阅读 · 0 评论 -
数组二分法查找
二分法查找(折半查找):前提是所要查找的数据有序 public static void main(String[] args) { //二分法查找(折半查找):前提是所要查找的数据要有序 int[] arr = new int[]{-12, -2, 21, 34, 56, 76, 89}; int dest = 21; int head = 0;//初始索引 int end = arr.length - 1;//初始的原创 2021-02-03 11:16:29 · 109 阅读 · 0 评论 -
数组的复制与反转
public static void main(String[] args) { //数组的复制 String[] arr = new String[]{"zs", "ls", "ww"}; String[] arr1 = new String[arr.length]; for (int i = 0; i < arr1.length; i++) { arr1[i] = arr[i]; }...原创 2021-02-03 10:22:01 · 139 阅读 · 0 评论 -
二维数组元素的默认初始化值
(1)初始化方式一:int[][] arr = new int[2][3];外层元素:arr[0]、arr[1]内层元素:arr[0][0]、arr[0][1]等外层元素的初始化值为:地址值内层元素的初始化值为:与一维数组初始化情况相同(2)初始化方式二:int[][] arr1 = new int[2][];外层元素的初始化值为:null内层元素的初始化值为:不能调用,否则报错...原创 2021-02-01 19:55:09 · 1318 阅读 · 0 评论 -
数组内存解析
原创 2021-02-01 17:05:42 · 94 阅读 · 0 评论 -
数组元素的默认初始化值
数组默认初始化值String[] names= new String[5]nullint [] ids= new int[5]0short [] ids= new short[5]0byte [] ids= new byte[5]0long [] ids= new long[5]0float [] ids= new float[5]0.0double [] ids= new double[5]0.0boolean [] ids= n...原创 2021-02-01 16:18:19 · 605 阅读 · 1 评论 -
一维数组的静态初始化和动态初始化
静态初始化:数组的初始化和数组元素的赋值操作同时进行动态初始化:数组的初始化和数组元素的赋值操作分开进行 int[] idArray;//声明 //静态初始化 idArray = new int[]{101, 102, 103, 104}; //动态初始化 String[] nameArray = new String[5];...原创 2021-02-01 15:11:39 · 650 阅读 · 2 评论 -
求1000以内的所有完数
完数:一个数如果等于他的因子之和,这个数就称为“完数”。因子:除去这个数本身的其他约数。 public static void main(String[] args) { int number = 0; for (int i = 1; i <= 1000; i++) { for (int j = 1; j <= i / 2; j++) { if (i % j == 0) {原创 2021-02-01 11:28:33 · 389 阅读 · 0 评论 -
求100以内的所有质数
public static void main(String[] args) { long startTime = System.currentTimeMillis(); //求100以内的所有质数 boolean isFlag = true; for (int i = 2; i <= 10000; i++) { for (int j = 2; j <= Math.sqrt(i); j++) { ...原创 2021-01-31 18:02:44 · 207 阅读 · 0 评论 -
求两个正整数的最大公约数和最小公倍数,超简单
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); //求最大公约数 int min = (m > n) ? n : m; for (int i = min; i >= 1; i--) { ..原创 2021-01-30 15:16:04 · 262 阅读 · 0 评论 -
判断是否是闰年
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { System.out.println("是闰年"); }原创 2021-01-29 16:30:45 · 109 阅读 · 0 评论 -
switch结构中的表达式的数据类型
switch结构中的表达式,只能是以下六种数据类型之一:byte、short、char、int、枚举类型、String原创 2021-01-29 15:04:56 · 2279 阅读 · 0 评论