Xinlong | 实验室 - Java
type: channel
link: https://wulongxin.com/index.php/tag/Java/
items: 构造函数&构造代码块 | Java
items: 关键字 | Java
items: 数组 | Java

构造函数&构造代码块 | Java
type: item
date: 2019-03-03T18:01:00+08:00
description: 构造函数构造函数的特点 1. 函数名与类名相同 2. 不用定义返回值类型（和void有区别，void代表没有具体结果返回的情况，而构造函数根本不需要定义返回值类型 3. 不可以写return语句。 4. 対象一建立，就会调用与之对应的构造函数。 5. 构造函数也是函数的一种，有一也可以进行函数的重载。构造函数的作用：可以用于给对象进行初始化 注意:当一个类中没有定义构造函数时，系统会默认给该类加入一个空参数的构造函数，否则对象无法建立。构造函数与一般函数的异同：构造函数是在对象一建立就运行，只运行一次，一般方法可以运行多次。什么时候写构造函数：当分析事物时，该事物一存在就具备一些特性或行为，那么将这些内容定义在构造函数之中构造函数之间相互调用用this()，且必须放在构造函数的第一行。（因为越详细的初始化越在前面）person(String n){ //结构函数的重载 name = n; } person(String n,int a){ //结构函数的重载 this(n); //结构函数之间调用，调用person(String n) age = a; }示例代码class person{ private String name; private int age; person(){ //结构函数 System.out.println("A:name="+name+",age="+age); cry(); } person(String n){ //结构函数的重载 name = n; System.out.println("B:name="+name+",age="+age); cry(); } person(String n,int a){ //结构函数的重载 name = n; age = a; System.out.println("C:name="+name+",age="+age); cry(); } public void cry(){ System.out.println("cry..."); } } public class test { public static void main(String[] args) { person p1 = new person(); person p2 = new person("lisi"); person p3 = new person("wangwu",10); } }输出结果A:name=null,age=0 cry... B:name=lisi,age=0 cry... C:name=wangwu,age=10 cry... 构造代码块构造函数的特点対象一建立就运行，且优先于构造函数结构上：只有一对{}，其中放着要执行的代码。与构造函数的区别构造代码块是所有对象进行统一初始化，构造函数是给对应的对象初始化初始代码块定义共性对象初始化内容（即执行的时同一类中每种构造函数都要执行的重复代码）。示例代码（建议与结构函数对比一下）class person{ private String name; private int age; { //重构代码块 cry(); } person(){ //结构函数 System.out.println("A:name="+name+",age="+age); } person(String n){ //结构函数的重载 name = n; System.out.println("B:name="+name+",age="+age); } person(String n,int a){ //结构函数的重载 name = n; age = a; System.out.println("C:name="+name+",age="+age); } public void cry(){ System.out.println("cry..."); } } public class test { public static void main(String[] args) { person p1 = new person(); person p2 = new person("lisi"); person p3 = new person("wangwu",10); } }运行结果cry... A:name=null,age=0 cry... B:name=lisi,age=0 cry... C:name=wangwu,age=10

关键字 | Java
type: item
date: 2019-03-03T17:30:00+08:00
description: 本文主要讲的是在java中超级关键的关键字。权限修饰符权限修饰符的定义： 权限修饰符，用于修饰类中的成员（成员变量、成员函数）。权限修饰符的种类： java中有四大修饰符，分别为： 1. private(私有的) ：最小的一种权限，只能在在本类中访问到。 注意：私有是封装的一种表现形式，但是封装不是私有 2. default(默认的) 3. protected(受保护的) 4. public(公共的)为什么要提供访问方式而不是直接访问成员变量： 因为可以在访问方式中加入逻辑判断语句来限制成员变量的内容。this关键字this关键字代表它所在函数所属对象的引用，简单来讲，哪个对象在调用this所在的函数，this就代表哪个对象。用途：用于在局部变量和成员变量重名时区分二者。在一个对象中的成员变量相互调用时，其前面都可视为省略了this.基本应用：在定义类中功能时，该函数内部要用到调用该函数的对象时，可以用this.来表示这个对象。但凡本类功能内部使用到了本类对象，都用this.表示。特殊用法：用于构造函数之间的调用，用this()。 示例代码如下：person(String n){ //结构函数的重载 name = n; } person(String n,int a){ //结构函数的重载 this(n); age = a; }static（静态）用法：用于修饰成员（成员变量，成员函数）当成员被static修饰时，除了可以被对象调用外，还可以直接被类名调用，格式：（类名.静态成员）特点随着类的加载而被加载，随着类的消失而消失当类一被加载到内存中时，静态也会被载入内存。因此静态变量也被称为类变量。（非静态变量被称为成员变量或实例变量）static变量的生命周期最长。优先于对象存在被所有同类对象共享可以直接被类调用。实例变量与类变量的区别存放位置：类变量：随着类的加载，存在于方法区中。实例变量：随着对象的建立存在于堆内存中生命周期：类变量：生命周期最长，随着类的消失而消失。对象可以产生多个，用完会消失，类消失无法创建静态变量。实例变量：随着对象的消失的消失static的注意事项静态方法只能访问静态成员，非静态方法既可以访问非静态成员，也可以访问静态成员。静态方法中，不可以定义this,super关键字因为静态先于对象存在static的好处对对象的共享数据进行单独空间存储，节省空间可以直接被类调用弊端生命周期过长访问出现局限性静态虽好，可不要贪杯哟但只能访问静态

数组 | Java
type: item
date: 2019-03-02T17:52:00+08:00
description: 一下所有的知识点只能确定成立于Java之中数组的定义(一维） 数组的定义有多种方式 1.元素类型[] 数组名 = new 元素类型[元素个数或数组长度]； int[] a = new int[5]; 2.元素类型[] 数组名 = new 元素类型[]{元素,元素,元素,元素,...}； int[] a = new int[]{3,5,6,8,4}; 3.元素类型 数组名[] = new 元素类型[元素个数或数组长度]； int a[] = new int[5]; 3.甚至可以：元素类型 数组名[] = {元素,元素,元素,元素,...}； int a = {3,5,6,8,4};常见问题. 1.Java中，整形数组的默认初始化值为0； 2.当数组角标越界的时候，编译不会报错，运行会报数组角标越界异常 java.lang.ArrayIndexOutOfBoundsException数组的操作. 1. 获取数据:数组中用一个属性可以直接获取到数组的长度。lenght System.out.println(arr.lenght) 2. 当arr是一个数组时，执行System.out.println(arr)时，会打印此数组实体的引用，具体内容：引用类型+数据类型+@+内存地址的哈希值 例：[i@de6ced,数组类型+int型+@+内存地址的哈希值二维数组的声明 1.方法一：int[][] arr = new int[3][3]; 剩下的略二维数组的特殊点 1.当运行代码 ` int[][] arr = new int[3][]; System.out.println(arr[0]); ` 系统会输出NULL，因为数组是引用数据类型，所以此时arr[0]指向为空。(能理解吗?)END