常量
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);
}
}