在Java中,数据类型分为基本数据类型和引用数据类型。基本数据类型有:4类(即:整型,浮点型,字符型,布尔型),8种(即:byte、short、int、long、float、double)。引用数据类型有:Sting,包装类(Byte、Short、Integer、Long、Float、Double、Character)等。
public class String1 {
public static void main(String[]args){
String a="hello";
String b="World";
System.out.println(a);
System.out.println(b);
System.out.println(a+b);//‘+’表示字符穿的拼接
}
}
对于+我有以下理解:
1.当+不与字符串进行相加时,+相当于普通的加法
public class String1 {
public static void main(String[]args){
int a=10;
int b=20;
System.out.println("int类型数的相加:"+(a+b));
float c=0.2F;
float d=0.2F;
System.out.println("float类型数据的相加:"+(c+d));
byte e=10;
byte f=20;
System.out.println("byte类型数据的相加:"+(e+f));
short g=10;
short h=90;
System.out.println("short类型数据的相加:"+(g+h));
long i=10L;
long j=20L;
System.out.println("long类型的数据相加:"+(i+j));
double k=10.0;
double m=20.0;
System.out.println("double类型数据相加:"+(k+m));
char A='A';
char B='B';
System.out.println("char类型数据相加:"+(A+B));
}
}
运行的结果如下:
2.当+和字符串与普通数据类型的数字相加时,相加的结果为字符串。计算时从左向右进行计算的。
public class String1 {
public static void main(String[]args){
int a=10;
int b=20;
String s="hello";
System.out.println(a+b+s);
System.out.println(s+a+b);
System.out.println(s+b+a);
System.out.println(s+(a+b));
}
}
运行的结果如下:
在有些情况下,需要将字符串和整形数字之间进行转换:
1.int 转成 String
public class String1 {
public static void main(String[]args){
int a=1234567890;
String s=String.valueOf(a);
System.out.println(s);
}
}
String中的valueOf:
2.String转成int
public class String1 {
public static void main(String[]args){
String s="12345";
int a=Integer.valueOf(s );
System.out.println(a+30);
}
}
int包装类中的valueOf:
运算符即,对操作数进行操作时的符号,不同的运算操作的含义不同。’
作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java中运算符可分为以下:算术运算符(+ - */)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等。
public class String1 {
public static void main(String[]args){
int a=10;
int b=20;
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));
}
}
运行的结果如下:
注意:
*都是二元运算符,使用时必须要有左右两个操作数
*int / int 结果还是int类型,而且会向下取整
*做除法和取模时,除数不能为0
*% 不仅可以对整型取模,也可以对浮点型取模
*两侧操作数类型不一致时,向类型范围大的提升
public class String1 {
public static void main(String[] args) {
int a = 10;
a += 10;//相当于a=a+10
System.out.println(a);
int s=10;
s-=10;//相当于s=s-10;
System.out.println(s);
int d=10;
d*=10;//相当于d=d*10
System.out.println(d);
int k=10;
k/=10;//相当于k=k/10
System.out.println(k);
int g=10;
g%=3;//相当于g=g%3
System.out.println(g);
}
}
运行的结果:
注意:只有变量才能使用该运算符,常量不能使用。
++是给变量的值+1,--是给变量的值-1。
注意:
*如果单独使用,【前置++】和【后置++】没有任何区别
*如果混合使用,【前置++】先+1,然后使用变量+1之后的值,【后置++】先使用变量原来的值,表达式结束时给变量+1
*只有变量才能使用自增/自减运算符,常量不能使用,因为常量不允许被修改
逻辑运算符主要有三个:&& || !,运算的结果都为boolean类型
public class String1 {
public static void main(String[] args) {
System.out.println("&&的逻辑表达式展示");
System.out.println(true&&true);
System.out.println(true&&false);
System.out.println(false&&false);
System.out.println(false&&true);
System.out.println("**********************************************");
System.out.println("||的逻辑表达式的展示");
System.out.println(true||true);
System.out.println(false||true);
System.out.println(false||false);
System.out.println(true||false);
System.out.println("*************************************************");
System.out.println("!的逻辑表达式展示:");
System.out.println(!true);
System.out.println(!false);
System.out.println("****************************************************");
}
}
结果展示:
注意:
*对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式
*对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式
*||,&&左侧表达式与右侧表达式都要为布尔表达式
*& 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短路求值
Java 中数据存储的最小单位是字节,而数据操作的最小单位是比特位. 字节是最小的存储单位,每个字节是由8个二进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。
位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。
位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位的每一位依次进行计算.
1.按位与&: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0
public class String1 {
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a&b);
}
}
进行按位运算, 需要先把 10 和 20 转成二进制, 分别为 1010 和 10100
2.按位或|:如果两个二进制位都是 0, 则结果为 0, 否则结果为 1
public class String1 {
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a|b);
}
}
运算方式和按位于类似
注意: 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算.
3.按位取反~:如果该位为 0 则转为 1, 如果该位为 1 则转为 0
public class String1 {
public static void main(String[] args) {
int a=0xf;
System.out.printf("%x\n",~a);
}
}
注意:
*0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制
数字对应 4个二进制位.
*0xf 表示 10 进制的 15, 也就是二进制的 1111
*printf 能够格式化输出内容, %x 表示按照十六进制输出.
*\n 表示换行符
4.按位异或^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1
public class String1 {
public static void main(String[] args) {
int a=0x1;
int b=0x2;
System.out.println(a^b);
}
}
注意:如果两个数相同,则异或的结果为0
1. 左移 <<: 最左侧位不要了, 最右侧补 0
2. 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
3. 无符号右移 >>>: 最右侧位不要了, 最左侧补 0
注意:
1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方
2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方
3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替
4. 移动负数位或者移位位数过大都没有意义
条件运算符只有一个:表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;
当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.