常量

java的常量一般分为6种:

A:字符串常量 :用""括起来的内容
B:整数常量 :所有的整数数据
C:小数常量 :所有的带小数的数据
D:字符常量 :用单引号括起来的内容
E:布尔常量 :只有两个值:true和false
F:空常量 :null



class ConstantDemo {
    public static void main(String[] args) {
        //字符串常量
        System.out.println("HelloWorld");

        //整数常量
        System.out.println(100);

        //小数常量
        System.out.println(12.345);

        //字符常量
        System.out.println('e');
        //下面的是错误的
        //System.out.println('BC');
        System.out.println('1');
        System.out.println("q");
        
        //布尔常量
        System.out.println(true);
        System.out.println(false);
    }
}



数据类型转换

参与运算的数据,要求类型一致

boolean类型不能转换为其他的数据类型

1.隐式转换
A:byte,short,char-->int-->long-->float-->double
B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型



class DataTypeDemo {
    public static void main(String[] args) {
        //类型一样的数据
        int a = 10;
        int b = 20;
        System.out.println(a + b);
        int c = a + b;
        System.out.println(c);
        System.out.println("--------------");

        //定义变量
        byte by = 3;
        int i = 4;
        System.out.println(by + i);
        int j =    by + i;
        System.out.println(j);
    }
}



前一部分都是int类型数据相加,后一部分时不同类型数据相加,遵循上方规则,byte类型数据会转换为int数据类型进行运算

2.强制类型转换

从大到小,不建议使用,因为可能有精度的丢失,使用方式:
目标类型 变量名=(目标类型)(被转换的数据);



class DataTypeDemo2 {
    public static void main(String[] args) {
        //定义变量
        byte by = 3;
        int i = 4;
        byte bb = (byte)(by + i);
        System.out.println(bb);
    }
}



运算符

对常量和变量进行操作的符号称为运算符

1.算术运算符

+,-,*,/,%,++,--

+是一个运算符, 一般有两个作用,一是加法运算符,二是字符拼接符



class DataTypeDemo3 {
    public static void main(String[] args) {
        System.out.println('a');
        System.out.println('a'+1);
        System.out.println('A'+0);
        System.out.println('0'+0);
        System.out.println("-----------");


        System.out.println('a'+'b');
        System.out.println("a"+"b");
        
        System.out.println("hello"+'a'+1); //左边字符串,往后拼的都是字符串
        System.out.println('a'+1+"hello");
        System.out.println("5+5="+5+5);
        System.out.println(5+5+"=5+5");
    }
}



++,--:自增自减运算符。
  如果有一个变量i,
  i++就表示这个值加1
  i--就表示这个值减1

用法:
A:单独使用
  放在操作数据的前后,效果一样。
B:参与操作使用
  放在操作数前面,先自增或者自减,然后再参与运算
  放在操作数后面,先参与运算,然后再自增或者自减



class OperatorDemo3 {
    public static void main(String[] args) {
        int a = 10;
        int b = a++;
        System.out.println(a);//11
        System.out.println(b);//10
        System.out.println("------------");

        int c = 10;
        int d = ++c;
        System.out.println(c);//11
        System.out.println(d);//11

        System.out.println("------------");
        int e = 10;
        //e++;
        ++e;
        System.out.println(e);
    }
}



2.赋值运算符

基本:=
复合:+=,-=,*=,/=,%=,...



class OperatorDemo {
    public static void main(String[] args) {
        //把10赋值给int类型的变量a
        int a = 10;

        //复合的用法
        int b = 10;
        b += 20; //结果等价于:b = b + 20;
        System.out.println(b);
    }
}



 

3.关系运算符

基本:==,!=,>,>=,<,<=

 特点:

无论表达式是简单还是复杂,结果肯定是boolean类型。



class OperatorDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int c = 20;
        System.out.println(a == b);
        System.out.println(a == c);
        System.out.println((a + b*c) == (a*b + c));
        System.out.println("----------------");

        System.out.println(a = b); //把b的值赋值给a,把a的值作为结果留下来
        System.out.println(a = c);
    }
}



 

4.逻辑运算符

&,|,!,^
&&,||

&:逻辑与 有false则false

|:逻辑或 有true则true

^:逻辑异或 相同false,不同true

!:逻辑非

&&和&的区别? 前者有短路效果,只要左边是false,右边不执行。而后者,全部执行。
||和|的区别? 前者有短路效果,只要左边是true,右边不执行。而后者,全部执行。



class OperatorDemo2 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;

        //&:逻辑与    有false则false
        System.out.println(a>b & a>c); //false & false = false
        System.out.println(a>b & a<c); //false & true = false
        System.out.println(a<b & a>c); //true & false = false
        System.out.println(a<b & a<c); //true & true = true
        System.out.println("--------");

        //&&:  串联开关
        System.out.println(a>b && a>c); //false && false = false
        System.out.println(a>b && a<c); //false && true = false
        System.out.println(a<b && a>c); //true && false = false
        System.out.println(a<b && a<c); //true && true = true
        System.out.println("--------");

        //|:逻辑或    有true则true
        System.out.println(a>b | a>c); //false | false = false
        System.out.println(a>b | a<c); //false | true = true
        System.out.println(a<b | a>c); //true | false = true
        System.out.println(a<b | a<c); //true | true = true
        System.out.println("--------");

        //||:  并联开关
        System.out.println(a>b || a>c); //false || false = false
        System.out.println(a>b || a<c); //false || true = true
        System.out.println(a<b || a>c); //true || false = true
        System.out.println(a<b || a<c); //true || true = true
        System.out.println("--------");

        int x = 3;
        int y = 4;
        //System.out.println((x++)>3 & (y++)>4); //false & false = false
        //System.out.println(x);//4
        //System.out.println(y);//5
        System.out.println((x++)>3 && (y++)>4);
        System.out.println(x);//4
        System.out.println(y);//4
    }
}



 

5.三元运算符

格式:

(关系表达式)?表达式1:表达式2;

执行流程:
  计算关系表达式,看其返回值
  true:表达式1就是整个表达式的值
  false:表达式2就是整个表达式的值



class OperatorDemo {
    public static void main(String[] args) {
        //获取两个数据中的较大值
        int x = 3;
        int y = 4;
        int z = (x > y)? x : y;
        System.out.println(z);

        //比较两个数是否相等
        int a = 4;
        int b = 4;
        //boolean flag = (a==b)?true:false;
        boolean flag = (a == b);
        System.out.println(flag);

        //获取三个数据中的较大值
        int c = 30;
        int d = 40;
        int e = 50;
        //int max = (c>d)?(c>e?c:e):(d>e?d:e);
        int temp = (c>d)?c:d;
        int max = (temp>e)?temp:e;
        System.out.println(max);
    }
}