byte a = 127;
short b = 32767;
int c = 123;
int c = 0b123;//二进制
int c = 0123;//八进制
int c = 0x123;//十六进制
long d = 123l;
long d = 123L;//数字后缀L或l
0b或0B开头数字 为二进制
0开头数字为 八进制
0x或0X开头为16进制
单精度,尾数可以精确到7位有效数字
float e = 123.4f//数字后缀加f或F
双精度,精度是float的两倍。通常采用此类型。
double f = 123.4
十进制数形式,例如: 3.14 314.0
科学记数法形式,如 3.14e2 3.14E2
String a = "hello";
String b = "world";
String c = a + b;
String d = a + b + 12;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
运行结果:
hello
world
helloworld
helloworld12
Process finished with exit code 0
判断左边类型是否与右边类型一致
package homeworkday7.chouxiang;
public class Test {
public static void main(String[] args) {
Cuiweiyang dqw=new Dengqinwen();
Cuiweiyang dqw2=new Dengqinwen2();
Person zs = new Person();
dqw.sleep();
dqw2.sleep();
Dengqinwen dqw3=(Dengqinwen) dqw;
zs.feed(dqw3);
}
}
package homeworkday7.chouxiang;
public class Person {
public void feed(Cuiweiyang cuiweiyang){
cuiweiyang.eat();
if(cuiweiyang instanceof Dengqinwen){//判断cuiweiyang是否与Dengqinwen是一个类型
System.out.println("转换为Dengqinwen成功!");
}
}
}
结果就是转换为Dengqinwen成功!
八种基本类型除了boolean类型以外,其他七种类型之间可以相互转化
将取值范围小的的类型自动提升为取值范围大的类型
(byte,char,short(byte->short))->(int)->(long)->(short)->(double)
4个字节float比8个字节long取值范围要大
原因: 浮点数在存储时结构与整数计算方式不同
容量大的转换为容量小的
格式 : (强制转换的类型) 变量名
int a =258;
byte b = (byte)a;
注:有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一 种数据类型,然后再进行计算
分类 | 运算符 |
---|---|
算数运算符 | * / + - % ++ – |
赋值运算符 | +=, -=, /=, *=, %=(扩展赋值运算符), = |
比较(关系)运算符 | == != > <= >= instanceof |
逻辑运算符 | |
位运算符 | |
条件运算符 | (条件表达式)? 表达式1:表达式2 |
++数值:先++再赋值y=x++ +3;//x+3
数值++:先赋值再++y=++x+3;//x+1+3
两边为整数
与++同理
short s = 3;
s=s+2; ①会出错,因为2为int型
s+=2; ②是对的,+2后会进行隐式转换为s对应的数据类型
/= ,*=,-=,%=同理
注:两边数据类型必须一致
判断两边数值是否相等(基本类型与基本类型),Boolean与Boolean进行比较,String与String进行比较(引用类型与引用类型),
注意 字符串自己不能比较大小,Boolean与Boolean不能比较大小
数值!=数值,bool!=bool,string!=string;
数值与数值,字符与数值,字符与字符
与3同理
判断左边类型是否与右边类型一致
package homeworkday7.chouxiang;
public class Test {
public static void main(String[] args) {
Cuiweiyang dqw=new Dengqinwen();
Cuiweiyang dqw2=new Dengqinwen2();
Person zs = new Person();
dqw.sleep();
dqw2.sleep();
Dengqinwen dqw3=(Dengqinwen) dqw;
zs.feed(dqw3);
}
}
package homeworkday7.chouxiang;
public class Person {
public void feed(Cuiweiyang cuiweiyang){
cuiweiyang.eat();
if(cuiweiyang instanceof Dengqinwen){//判断cuiweiyang是否与Dengqinwen是一个类型
System.out.println("转换为Dengqinwen成功!");
}
}
}
所有表达式结果为true,结果为true ,否则false
特点:当第一个表达式为false时,还会去继续执行第二个式子
所有表达式结果为true,结果为true ,否则false
特点:当第一个结果为false时,不会再继续执行第二个式子
int a=1;
int b=2;
int c=3;
System.out.println(a>b&(b++)>c);
System.out.println(b);
b=2;
System.out.println(a>b&&(b++)>c);
System.out.println(b);
false
3
false
2
当所有表达式结果为false,结果为false,否则为true
特点:当第一个表达式为true时,还会去继续执行第二个式子
当所有表达式结果为false,结果为false,否则为true
特点:当第一个表达式为true时,不会去继续执行第二个式子
int a=1;
int b=2;
int c=3;
System.out.println(a<b|(b++)>c);
System.out.println(b);
b=2;
System.out.println(a<b||(b++)>c);
System.out.println(b);
true
3
true
2
!true = false,!false = true;
相同为false 不同为true
(条件表达式)? 表达式 1 : 表达式2
若 条件表达式 为true 去执行表达式 1 ,否则执行表达式 2;
空位补0,被移除的最高位丢弃,空缺位补0
int a=7;
int b=4;
System.out.println(b<<2);
//0000 0100 4
//0001 0000 16
被移位的二进制最高位是0,右移后,空缺位补0,最高位是1,空缺位补1
int b=4;
System.out.println(b>>2);
//0000 0100 4
//0000 0001 1
被移位二进制最高位无论是0还是1,空缺位都用0补
正数
int b=4;
System.out.println(b>>>2);
//0000 0100 4
//0000 0001 1
负数
int b=-4;
System.out.println(b>>>2);
/*
0111 1111 1111 1111
1111 1111 1111 1110 -4
*/
/*
0111 1111 1111 1111
1111 1111 1111 1110 1073741823
*/
对应两位都为1,则结果为1,否则0
int a=2;
int b=4;
System.out.println(a&b);
/*
0000 0010 2
0000 0100 4 &
0000 0000
*/
对应两位都相等,则结果为0,否则1
int a=2;
int b=4;
System.out.println(a^b);
/*
0000 0010 2
0000 0100 4 ^
0000 0110
*/
对应两位都为0,则结果为0,否则1
int a=2;
int b=4;
System.out.println(a|b);
/*
0000 0010 2
0000 0100 4 |
0000 0110
*/
对所有位取反 1~0 0~1
int a=2;
int b=4;
System.out.println(~a);
/*
~0000 0010 2
1111 1101 -3(最高位为1)
*/
注:使用byte类型移位时,系统会自动换为int进行位运算
import java.util.Scanner;
public class BasicType {
public static void main(String[] args){
Scanner in = new Scanner(System.in);//Scanner 后面可以跟任何标识符来做对象,System.in为固定格式
int a = in.nextInt();
String b = in.next();
System.out.println(a);
System.out.println(b);
}
}
条件语句 - 根据不同条件,执行不同语句
if条件结构是根据条件判断之后再做处理