Java基础知识(二)

来源:互联网 发布:ip地址与域名的关系 编辑:程序博客网 时间:2024/06/10 05:00

数组

1.数组的定义

一维数组的定义int[] arrs;二维数组的定义int[][] darrs;

数组的初始化

静态初始化darrs = new int[][]{{1,2,3}, {4}, {7,8,9}}; 动态初始化darrs = new int[2][3];darrs[0] = new int[5];//给第一个元素初始化

2.方法
方法的调用
1、使用方法所属的类创建一个对象 A a = new A();
2、使用对象调用方法 a.methodName();
3、如果有返回值,那么可以选择接收返回值,也可以不接收

定义一个方法,方法名的首字母小写,碰到return直接结束整个方法
[修饰符1 修饰符2 …] 返回值类型 方法名([形式参数列表]){
方法体;
[return 返回值;]
}

判断年份是否为闰年的方法public boolean isRunYear(int year){        if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){            return true;        }         return false;    }

3.类
类的访问控制权限共有两种(内部类除外,因为内部内的访问权限有四种):public和默认。默认级别的类只能被同一个包中的类看到,包外不可见。

/** * 描述狗的类 * @author Ken * */public class Dog {    /**     * 属性 -- 成员变量(全局变量)     * @param args     */    String name;//名字    int age;//年龄    String sex;//性别    /**     * 行为 -- 方法     * @param args     */    //描述了狗睡觉的行为    public void sleep(){        System.out.println(name + "在睡觉");    }    //进食的行为    public void eat(){        System.out.println(name + "在啃骨头");    }    //对eat方法进行重载    public void eat(String str){        System.out.println(name + "在吃" + str);    }    /**     * 构造方法 -- 创建对象时调用     * 1、系统默认为每一个类创建一个无参的构造方法     * 2、构造方法也可以重载,重载的方式和普通方法一样     * 3、如果程序员手动的为类提供了构造方法,则系统默认的无参构造方法就消失了     * 4、通常如果提供了其他的构造方法,也会再提供一个无参的构造方法     *      * 构造方法的作用:进行属性初始化     */    public Dog(){    }    public Dog(String name, int age, String sex){        this.name = name;        this.age = age;        this.sex = sex;    }    /**     * main方法 -- 程序的入口     * @param args     */    public static void main(String[] args) {        /**         * 创建一个狗的对象         */        Dog dog;//定义一个Dog类型的变量,变量名叫dog        dog = new Dog();//对变量dog初始化,通过Dog类的构造方法Dog()配合new关键字初始化        //合并 Dog dog = new Dog();        int i;        i = 10;        //int i = 10;    }}

方法的重载:
1、如果有准确的参数列表,则匹配该方法
2、如果没有准确的参数列表,则匹配表数范围最接近该类型的类型(byte -> short -> int -> long -> floag -> double)

public class Computer {    public int add(byte b1, byte b2){        System.out.println("byte");        return b1 + b2;    }//  public int add(int i1, int i2){//      System.out.println("int");//      return i1 + i2;//  }//  public long add(long i1, long i2){//      System.out.println("long");//      return i1 + i2;//  }    public float add(float i1, float i2){        System.out.println("float");        return i1 + i2;    }    public double add(double d1, double d2){        System.out.println("double");        return d1 + d2;    }    public static void main(String[] args) {        Computer cp = new Computer();        cp.add(1, 2);    }}

代码块,构造方法的相互调用

/** * 人 * @author Ken * */public class Person {    /**     * 属性     */    String name;    int age;    /**     * 代码块     * 创建对象的时候被调用     * 通常用于对象的初始化     * 先于构造方法执行     */    {        System.out.println("代码块被调用");        this.name = "张三";        this.age = 16;    }    /**     * 构造方法     * @param name     * @param age     */    public Person(String name, int age){        this.name = name;        this.age = age;    }    /**     * 构造器的互相调用     * 1、必须在构造器的第一行调用另一个构造器     * 2、调用的语法this();     */    public Person(){        this("阿狗", 10);        System.out.println("构造方法被调用");    }    /**     * 内部类     */    /**     * 行为 -- 方法     */    public Person sleep(){        this.eat();        System.out.println("睡觉了");        return this;    }    public Person eat(){        System.out.println("吃饭了");        return this;    }    public void displayInfo(){        System.out.println("姓名:" + name);        System.out.println("年龄:" + age);    }}

匿名对象

public class Client {    public static void main(String[] args) {//      Person p = new Person("李四", 20);//      p.displayInfo();        /**         * 一个引用只能指向0个或1个对象         * 一个对象可以被0个或多个引用指向         *///      Person p1 = new Person();//      p1 = new Person();//p1指向另一个Person对象//      Person p2 = p1;//让p2同样指向一个Person对象//      p2 = null;//      p1.name = "叶良辰";//      System.out.println(p2.name);        Person p = new Person("叶良辰", 16);        Person p2 = new Person("叶良辰", 16);        //链式编程        p.eat().eat().eat().eat().sleep();        /*         * 匿名对象 -- 某一个对象只需要使用一次        new Person().eat().eat().eat();        new Person().eat();        */    }}

可变参数:表示可以接收0到N个参数

public class Test {    /*     * 可变参数:表示可以接收0到N个参数     */    public void test(int... i){        System.out.println("可变参数");//      int[] arrs = i;//      for(int arr : arrs){//          System.out.println(arr);//      }arrs    }    /*     * 方法重载     * @param i     */    public void test(int i){        System.out.println("一个int类型的参数");    }    public static void main(String[] args) {        Test t = new Test();        t.test(1,2,3);    }}

成员变量:默认初始化
局部变量:要自己初始化

public class Test2 {// int age;  //所以这里可以不赋值,默认是0    /**     * 成员变量     * --默认初始化     */    int age;    public void println(){        /*         * 局部变量         * --不会自动初始化         */        int age = 0;//这里要赋值,要赋值,不然报错        System.out.println("age:" + age);    }    public static void main(String[] args) {        Test2 test2 = new Test2();        test2.println();    }}
0 0