变量

  • 相同的作用域下不能有同名的变量
基本数据类型
  • 存的就是具体的值,有四类八种基本数据类型
  • 逻辑类型 boolean
  • 整型 byte、shot、int、long
  • 浮点型 float、double
  • 字符型 char
引用数据类型
  • 存的是一个地址值,指向一个内存地址
  • 除了基本数据类型,其他的都是引用数据类型
字符串
  • String s = “ABC”;
数组
  • 数组是一种数据结构(相当于容器),用来存放相同类型的数据
  • 数组定义时必须指定数组的大小、固定数据类型
  • 数组分为一维数组、多维数组(二维数组)
  • 数组通过索引访问元素,索引从0开始
  • 获取数组的长度:数组名.length;
一维数组
  • 一维数组赋值、取值:arr[0] = 10; System.out.println(arr[0]);
  • 创建一维数组分为静态初始化、动态初始化,数组初始化就是赋值
  • 静态初始化:数据类型[] 数组名 = {值1,值2,值3,值4}; int[] arr = {1,2,3,4,3,4,5};
  • 不能通过静态初始化直接修改整个数组
  • 动态初始化:数据类型[] 数组名 = new 数据类型[size]; int[] arr = new int[3];
动态初始化元素默认值:boolean是false、整型是0、小数是0.0、char是空字符、引用数据类型是null
二维数组
  • 创建二维数组分为静态初始化、动态初始化
  • 静态初始化:数据类型[] [][][] 数组名 = {{…},{…},{…}; int[] [] arr2 = {{1,2},{3,4},{5,6},{1}};
  • 动态初始化:数据类型[] [] 数组名 = new 数据类型[length] [length]; int[] [] arr = new int[3] [3];
  • 二维数组赋值、取值:arr[0] [0] = 10; System.out.println(arr[0] [0]);
数组常见异常
  • NullPointerException null值调用属性或者方法
  • ArrayIndexOutOfBoundsException 访问了不存在的索引
  • 报了异常后面的代码不会被执行
运算符

算数运算符

  • “+”、“-”、“*”、“/”
  • % 表示 取余(取模)
  • “+”:可以表示字符串拼接,字符串可以和任意数据类型进行拼接,最终得到结果也是字符串
  • ++: 自增1 – :自减1,单独使用时,++ 放前和放后没有区别,都是+1
  • 参与运算时,++在后面先把变量x的值取出来赋值(运算),再自增1
  • 参与运算时,++在前面先把变量x自增1,再把值取出来赋值(运算)
  • java运算结果的数据类型 = 参与运算的范围最大数据类型

关系运算符

  • 结果为boolean
  • ==、!=、>、>=、<、<=

逻辑运算符

  • 结果为boolean
  • &、|、!、&&、 ||
  • & 遇false则false,| 遇true则true
  • && 或||短路:如果左边已经决定了整个表达式的结果,那么右边不会执行,提升性能

赋值运算符

  • =、+=、-=、 *=、 /= 、%=

条件运算符(三元运算符)

  • boolean结果的表达式:? 结果1 : 结果2;
  • true 返回 结果1,false 返回 结果2
public class StringDemo {
    public static void main(String[] args){
        //数据类型 变量名 = 变量值;
        String str = "helloworld";
        //修改值
        str = "fffff";
        System.out.println(str);
    }
}
public class ArrayDemo {
    public static void main(String[] args){
        //静态初始化:数据类型[] 数组名 = {值1,值2,值3,值4}
        int[] ages = {20, 21, 22, 23, 33};
        //ages输出地址值:[I@1b6d3586
        System.out.println(ages);
        System.out.println(ages[0]);
        System.out.println(ages[1]);
        System.out.println(ages[2]);
        System.out.println(ages[3]);
        System.out.println(ages[4]);
        //修改数组元素的值
        ages[0] = 1;
        System.out.println(ages[0]);
        //动态初始化:数据类型[] 数组名 = new 数据类型[size];
        int[] ages2 = new int[4];
        ages2 = new int[3];
        //ages2输出地址值:[I@4554617c
        System.out.println(ages2);
        //动态初始化元素默认值:boolean是false、整型是0、小数是0.0、char是空字符、引用数据类型是null
        System.out.println(ages2[0]);
        System.out.println(ages2[1]);
        System.out.println(ages2[2]);
        ages2[0] = 100;
        ages2[1] = 40000;
        System.out.println(ages2[0]);
        System.out.println(ages2[1]);
        //获取数组的长度:数组名.length;
        System.out.println(ages2.length);
    }
}
public class ArrayArrayDemo {
    public static void main(String[] args){
        //静态初始化:数据类型[][] 数组名 = {{..},{..},{...}};
        String[][] arr = {{"a","b"}, {"c","d"}, {"e","f","g"}};
        //[[Ljava.lang.String;@154617c
        System.out.println(arr);
        //[Ljava.lang.String;@a14482
        System.out.println(arr[0]);
        System.out.println(arr[1][1]);
        arr[1][1] = "mm";
        System.out.println(arr[1][1]);
        System.out.println(arr.length);
        //动态初始化:数据类型[][] 数组名 = new 数据类型[][];
        String[][] arr1 = new String[3][];
        //null
        System.out.println(arr1[0]);
        arr1[0] = new String[2];
        arr1[0][0] = "ll";
        arr1[0][1] = "ff";
        System.out.println(arr1[0][0]);
        System.out.println(arr1[0][1]);
        String[][] arr2 = new String[3][2];
        //[Ljava.lang.String;@140e19d
        System.out.println(arr2[0]);
        //null
        System.out.println(arr2[0][0]);
        arr2[0][0] = "555";
        System.out.println(arr2[0][0]);
    }
}
public class ArrayException {
    public static void main(String[] args){
        String[] arr = {"cba", "nba", "mba"};
        System.out.println(arr[0]);
        //数组常见异常
        //ArrayIndexOutOfBoundsException
        //System.out.println(arr[100]);
        //报了异常后面的代码不会被执行
        System.out.println("-------");
        System.out.println("-------");
        //引用数据类型赋值为null
        String[] arr1 = null;
        System.out.println(arr1);
        //NullPointerException
        System.out.println(arr1[0]);
    }
}
public class OpeartorDemo {
    public static void main(String[] args){
        //算数运算符
        int a = 10;
        int b = 3;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);
        System.out.println(a % b);
        //字符串拼接,字符串可以和任意数据类型进行拼接,最终得到结果也是字符串
        System.out.println("a" + "B" + (100 + 100));
        //java运算结果的数据类型 = 参与运算的最大数据类型
        System.out.println(1.0*a/b);
        // ++(自增)、--(自减),单独使用时,前后效果一致,都是自增1/自减1
        ++a;  // a = a + 1
        //参与运算时,++在后面,先运算再自增,++在前面,先自增再运算
        int c = a++;
        //int c = a; a = a + 1;
        int d = ++a;
        //a = a + 1; int c = a
        System.out.println(c);
        System.out.println(d);
        System.out.println(a++ + ++a);
        //关系运算符
        System.out.println(a > b);
        System.out.println(a >= b);
        System.out.println(a < b);
        System.out.println(a <= b);
        System.out.println(a != b);
        System.out.println(a == b);
        //逻辑运算符 boolean
        System.out.println(!false);
        // & 遇到false则false
        System.out.println(a > b & a > b);
        System.out.println(a > b & a < b);
        System.out.println(a < b & a > b);
        System.out.println(a < b & a < b);
        // | 遇到true则true
        System.out.println(a > b | a > b);
        System.out.println(a > b | a < b);
        System.out.println(a < b | a > b);
        System.out.println(a < b | a < b);
        //&&、|| 提升性能
        System.out.println(a > b && a > b);
        System.out.println(a > b && a < b);
        System.out.println(a < b && a > b);
        System.out.println(a < b && a < b);
        //赋值运算符  += -= *= /= %=
        a = 10;
        a += 10;
        //a = a + 10;
        a += 10.1;
        //java中不允许大的数据类型直接赋值给小的数据类型
        a = (int)(a + 10.1);
        System.out.println(a);
        //三元运算符
        //A(boolean结果的表达式) ? B : C
        //A为true执行B,A为false执行C
        a = 10;
        b = 50;
        int max = a > b ? a : b;
        System.out.println(max);
    }
}