Java学习笔记二:初始化(三)

3.数组初始化

1.数组是一个固定长度的集合,在初始化大小后就不能改变其长度。

数组分配在堆中,并在栈中存有指向该数组的一个引用。

class Arr
{
    public static void main(String[] args)
    {
        int[] a = {1, 2, 3, 4};
        int[] b = a;

        for (int i = 0; i < b.length; i++)
        {
            b[i]++;
        }

        for (int i = 0; i < a.length; i++)
        {
            System.out.print(a[i]);
        }
    }
}

输出结果:2345

对其他引用来说,当其他对于使用另一个对象引用时,他们指向的都是堆中同一个区域。

 

2.使用Arrays.toString()打印数组

使用这样的方式可以减少对数组遍历,但是只对一维数组起作用

Arrays.toString(a);

 

3.可变参数列表

顾名思义,就是输入参数个数是可变的。如:

private static void printArray(String... strs)
{
    System.out.println(Arrays.toString(strs));
}

这里指定了传入进来的参数只能是String类型,但是在实际应用用,用到较多的是Object,

这样会带来一个好处:使用一个方法就能提供给不同输入参数的方法调用,省掉重载的工作。

// 输入
printArray(1, "1", 1.11, new InvokeStaticBlock(), ‘a‘);

private static void printArray(Object... strs)
{
    for (Object object : strs)
    {
        System.out.print(object + " ");
    }
}

输出:

1 1 1.11 [email protected] a

4.继承初始化

每个类的编译代码都存在于它自己的独立文件中。该文件只有在需要使用程序代码时才会被加载。一般来说,累的代码在初次使用时才加载。

class ParentClass
{
    protected static String b = "b";

    static
    {
        System.out.println("ParentClass.Static.Block");
    }

    protected static void output(String s)
    {
        System.out.println("ParentClass.output(): " + s);
    }
}

class SonClass extends ParentClass
{
    private String c = "c";

    static
    {
        System.out.println("SonClass.Static.Block");
    }

    public static void main(String[] args)
    {
        System.out.println("SonClass.main()");
        SonClass son = new SonClass();
        son.output(ParentClass.b);
    }
}

输出结果:

ParentClass.Static.Block
SonClass.Static.Block
SonClass.main()
ParentClass.output(): b

初始化顺序为:

(1)先找到 main 方法,获取对应 class 文件,这样Java虚拟机才知道要加载哪些程序;

(2)初始化父类,如果还有父类,继续初始化父类的父类;

(3)首先初始化父类 static 数据,然后在初始化其他成员变量,最有执行构造函数;

(4)子类也是同样的数序,最后在执行 main 函数的内容。

时间: 2024-10-27 11:55:24

Java学习笔记二:初始化(三)的相关文章

Java学习笔记二:初始化(一)

1.对象初始化 在使用 new 初始化对象时,系统通常使用默认的构造函数,这个构造函数没有返回值,格式为: public class InitializeTest { private int a; // 默认构造函数 public InitializeTest() { } // 自定义构造函数 public InitializeTest(int a) { this.a = a; } } 虽然在使用 new 创建实例时,返回了这个对象的引用,但是这个与没有返回值的void方法不同 //void方法

Java学习笔记二:数据类型

Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围从-2 147 483 6至2 147 483 647 超过20亿,如果用来存储大于20亿的值,最好使用long型. 1.2  int 与Integer: Java中的数据类型分为基本数据类型和复杂数据类型.Int为前者,integer为后者. Integer是int的封装类,提供了很多转换方法,当

Java学习笔记二:初始化(二)

这里主要学习初始化,分为: 1.变量初始化 2.构造函数初始化 3.数组初始化 4.继承初始化   1.变量初始化 成员初始化分为两种: (1)成员变量初始化 在定义成员变量时,如果没有给变量赋于初始值,系统会给出一个默认值. 这里有两种选择:要么使用系统的默认初始值,要么自己定义初始值. 系统给出的默认输出值为: boolean false char [ ] byte 0 short 0 int 0 long 0 float 0.0 double 0.0 refenece null char初

JAVA学习笔记-数组的三种初始化方式

package Study; public class TestArray02 { public static void main(String[] args){ //声明 int[] a; int b[]; //创建数组对象 a = new int[4]; b = new int[5]; //初始化(对数组元素的初始化) //默认初始化:数组元素相当于对象的成员变量,默认值跟成员变量的规则一样.数字0,布尔false,char\u0000,引用:null: //动态初始化: for(int i

黑马程序员——JAVA学习笔记二(语法基础)

1,     Java程序都是以类的形式存在的,所以需要告诉虚拟机需要加载类的位置,那么可以设置classpath变量.classpath变量如果有;,则表示还会在当前目录查找,没有;则不会在当前目录查找. 当然如果没有classpath也会在当前目录查找. 2,    rd删除目录,加/S可以删整个目录,Windows从里向外删除. 3,    一个文件只有一个public类,文件名必须和类名相同,如果不是友好类,则不需要同名. 4,    JAVA一共有50个关键字 关键字是电脑语言里事先定

Java学习笔记二(基础语法)

1 Java 是强类型语言,提供的8中基本数据类型有以下几类: Byte :字节类型,一个字节,有符号的8位的整数.字节类型参与运算的时候,会转化为int类型. byte b;b=3;b=(byte)(b*3);  在这里第二个赋值必须经过强制类型转化,否则会编译出错. short:2个字节,Byte可行可以直接赋值给short,但是反过来需要强制类型转化. int:4字节类型的有符号的整数. long:8个字节类型的有符号的整形 char:2个字节的无符号的类型.采用的是Unicode的编码格

数组排序、递归——(Java学习笔记二)

升序: 选择排序: 选定一个元素,一次和后面的元素相比较,如果选定的元素大雨后面的比较元素,就交换位置 先出现最小值,最后出现最大值. public static void main(String[] args) { int[] arr = {5,8,9,12,55,565,421,12,2512,-5,-56}; sortMethod(arr); p(arr); } //排序核心代码 private static void sortMethod(int arr[]) { for(int i =

java学习笔记二

java变量:类变量(static修饰).成员变量.局部变量,java是没有全局变量 创建对象:a.声明变量.b.实例化对象.c.初始化变量 Java访问修饰符:public:所有可见,protected:同一包的类及其子类(不在同一个包中也可见)可见:private:同一类可见:默认是统一包可见 类的访问修饰符有public,默认包可见,修饰符有final.abstract; 方法的访问修饰符有public.private.protected,修饰符有static.final 变量的访问修饰符

JAVA学习笔记(二) - 运算符

变量与常量 变量的声明和赋值 /* * 变量的声明和赋值 */ public class Test { public static void main(String[] args) { // 1-可以声明的同时,对变量赋值:int x = 10; //局部变量,变量名符合命名规则. //推荐使用此种方式. int x = 10; // 2-可以先声明,再赋值:int x; x = 10; int y;//变量的声明 y = 20;//将20赋值给y指向的内存空间 // 3-可以一行声明多个变量: