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