Java - 基础到进阶

# day01

一:基本操作

package _01.java基本操作;

/**
 * 文档注释
 */
public class _01Alls {
    public static void main(String[] args){
        /*
        * 数据类型:
        * 数值型:
        *   整数:byte(1), short(2), int(4), long(8)
        *   浮点:float(4), double(8)
        * 字符串:char(2)
        * 布尔  :boolean(1)
        *
        * String:双引号(单引号只能放一个)
        *
        * 类型转换:
        *   手动转换:
        *       1. 不能直接把一个大的类型赋值给小的类型
        *       2. 强制类型转换后才可赋值:byte b (byte)100;
        *   自动转换:
        *       1. 运算时,两端类型需要一致
        *       2. 如果是数值运算,会把小的转换为大的类型
        *       3. JVM 运算时,最小识别类型时 int (byte,short char 会自动提升为 int 类型)
        *
        * 自增与自减:
        *   注:a++ / a-- 参与运算时使用初始值
        *       ++a / --a 参与运算时使用的是自增后或自减后的值
        *
        * 三元运算:
        *   接收值 = 逻辑表达式 ?表达式1(true) : 表达式2(false)
        *
        * 逻辑运算:
        *   ^ : 相同返回 false, 不同返回 true
        *   && / || : 一旦一方成立,后面不再执行
        *
        * switch 语句:
        * 1. 完整写法:
        *   switch(整型表达式){
        *       case 值1 : {
        *           返回结果;
        *       }break;
        *       case 值2 : {
        *           返回结果;
        *       }break;
        *       default : 没有条件满足则执行此语句;
        *   }
        * 2. 简写:
        *   switch(整型表达式){
        *       case 值1 : 返回结果;break;
        *       case 值2 : 返回结果;break;
        *       case 值3 : 返回结果;break;
        *       default : 没有条件满足则执行此语句;
        *   }
        *
        * do while(先执行一次代码块,再进行判断):
        *   do{
        *       代码块;
        *   }while(表达式);
        *
        * for 循环:( 可以给循环起 别名:outter : for(..){...} )
        * for(int num = 1; num <= 10; num++){
        *   代码块;
        * }
        * foreach:
        * for(数据类型 i : 数组){
        *   代码块;
        * }
        *
        * 终止:
        *   1. break  : 跳出循环, 后续同级代码继续执行
        *   2. return : 跳出循环, 后续不执行,包括同层级代码
        *
        * 方法:
        *   1. 声明到 class 中
        *   2. 如果一个方法之前有 static 那么这个方法也需要加 static
        *   3. void : 这个参数意思是返回空, 但是如果有返回值的话, void需要改成返回值的数据类型
        * 方法重载:
        *   - 在同一个类中,允许两个方法名重复,但前提是两个方法的参数(类型也可以一致)不能一致
        *
        * 可变参数:
        *   1. 数组: void a(int[] arg){xxx}
        *   2. 可变: void a(int ...arg){xxx}
        * */

        // 变量声明
        int a = 10;
        int b = 20;
//
//        // 打印
        System.out.println('a');
        System.out.println(true ^ false); // true

        int num = 100;
        if(num == 100){
            System.out.println("true");
        }

        boolean s = true;
        while(s){
            System.out.println('1');
        }
    }
}

二:数组

package _01.java基本操作;

public class Array {
    public static void main(String[] args) {

        // 数组写法:
        // 要存放的数据类型[] 数组名 = new 要存放的数据类型[] {存放的数据内容}
        // 简写:int[] array = {1,2,3}
//        int[] array = new int[] {1,2,3};
//        System.out.println(array[0]);

/*
        // 1. 静态定义数组
        // 定义一个数组
        String[] strInfo;
        // 初始化数组
        strInfo = new String[] {"q","w"};
        System.out.println(strInfo[1]);

        String l = "[";

        for(int i=0; i<strInfo.length; i++){
            l+=strInfo[i]+',';
        }
        String res = l+"]";
        System.out.println(res);
*/
        // 2. 动态定义数组
//        String[] all = new String[100];
//        all[0] = "Hello";
//        System.out.println(all[0]);

        // 3. 二维数组
        // 写法:int[][] Arrays = new int[][] {arr1,arr2,arr3}
        // 获取:
        int[] arr1 = {1,2,3};
        int[] arr2 = {4,5,6};
        int[][] arr = {arr1,arr2};
        for(int i : arr1){
            System.out.println(i);
        }
        /*
        for(int i = 0; i<arr.length; i++){
            int[] now_arr = arr[i];
            for(int j = 0; j < now_arr.length; j++){
                System.out.println(now_arr[j]);
            }
        }
        */
    }
}

三:面向对象

package _02.java面向对象;

public class _02SomeInfo {

    String name;
    int age;

    _02SomeInfo(String name){
        this.name = name;
    }

    _02SomeInfo(String name, int age){
        this(name);
        this.age = age;
    }

    void run(){
        System.out.println(name+" is Run..");
    }

    void eat(String food){
        System.out.println(name+" want Eat " +food);
    }

    public static void main(String[] args){
        /*
        _02SomeInfo info = new _02SomeInfo();
        info.name = "q";
        info.age = 11;
        info.run();
        info.eat("apple");
        */
        _02SomeInfo info = new _02SomeInfo("q",11);
        info.run();
        info.eat("apple");
    }

    /*
    * 虚拟机栈:(每个函数从调用到执行结束,就是对应一个栈帧的入栈和出栈)
    *   当执行一个方法时,就会为这个函数创建一个栈帧,并加入虚拟机栈。
    *
    * 堆:被所有线程共享的一块区域,在虚拟机启动时创建,所有的对象实例及数组都在堆上分配
    *       (使用 new 关键字表示在堆中开辟一块新的空间)
    *
    * 属性概念:
    *   - 有 getter/setter 方法的才是属性,否则是 字段或成员变量。
    *
    * 构造器:
    *   1. 作用:
    *       - 创建对象,必须和new一起使用。
    *       - 完成对象的初始操作。
    *   2. 特点:
    *       - 构造器的名称和当前类名是一样的。
    *       - 禁止有返回类型,不能使用void作为fa返回值。
    *       - 在构造器中不能使用 return
    *           - 但是构造器有返回值(返回值时内存地址)
    *   3. 默认构造器特点:
    *       - 符合构造器特点。
    *       - 无参数。
    *       - 如果类中有 public 装饰,那么构造器也会有public,否则无。
    *   4. 自定义构造器:
    *       - 使用:
    *           User(){
    *               代码块;
    *           }
    *       - 构造器重载:
    *           User(String name){
    *               Myname = name;
    *           }
    *           User(String name, int age){
    *               Myname = name;
    *               Myage = age;
    *           }
    *
    * static 修饰符:
    *   1. 概念:
    *       - 如果在字段或方法面添加了 static, 那么它的字段或方法就属于类(类成员),没有添加则是 实例成员
    *   2. 特点:
    *       - static装饰的内容是随着类的加载而加载的。
    *       - static装饰的内容,优先于对象的存在。
    *       - static装饰的内容,被该类型的所有对象共享。
    *       - static装饰的内容,可以直接使用类名调用。
    *   3. 类成员和实例成员的访问:
    *       - 在 static 方法中只能调用 static 成员
    *       - 非 static 方法,两者都可以访问。
    *   4. 注:
    *       - 方法中不能定义以 static装饰的变量。
    *
    * 封装:
    *   1. 访问修饰符:
    *       - private   : 表示私有(类访问权限),且只能在类中才有访问权限。
    *       - protected : 表示子类访问权限,同包中可以访问,不同包中不能访问,同包不同类不能访问,继承可以访问。
    *       - public    : 表示全局,可以在项目中任何地方使用。
    *       - 默认      : 表示包访问权限,同一类中可以访问,同一包,不同类可以访问,不同包不能访问。
    *
    * this:
    *   1. 解决成员变量和参数问题。
    *   2. static 不能和 this 一起使用。
    *   3. 构造器的重载互调:
    *       - 在一个构造器中调用另一个构造器:
    *           - this(xx)  // 必须写在第一行。
    *           User(String name){
    *               this.name = name;
    *           }
    *           User(String name, int age){
    *               this(name);
    *               this.age = age;
    *           }
    * */
}

猜你喜欢

转载自www.cnblogs.com/chaoqi/p/10640204.html