目录
一、布尔类型(boolean)
在Java中,真与假分别用 true 和 false 表示
要注意,true 和 false 不是值,不能进行运算操作
布尔类型的大小是根据JVM来判断的,大小不一定。
public static void main(String[] args) {
boolean fla1 = true;
System.out.println(fla1);
}
二、字符串类型(String)
首先要注意这个 'S' 是大写的哦。
不同于C中用字符数组存字符串,
Java中存在String这个类型来表示字符串。
public static void main(String[] args) {
String str = "hello";
System.out.println(str);
}
字符串拼接
普通的字符串拼接:
System.out.println("hello" + "world");
如果带上数字,这里需要分情况:
//其他数据类型和字符串使用拼接,结果就是一个字符串
System.out.println("hello" + 10 + 20);//hello1020
//但拼接有个顺序,在拼接之前能进行运算
System.out.println(10 + 20 + "hello");//30hello
System.out.println("hello" + (10 + 20));//先运算
System.out.println(10 + "" + 20 + "hello");//10和20之间隔着一个字符
转义字符
我想要打印下面这个怎么办?(就是带着引号打印)
我们需要用到转义字符 ' \ '
public static void main(String[] args) {
//转义字符
String s1 = "\"bit\"";
String s2 = "\\bit\\";
System.out.println(s1);//打印"bit"
System.out.println(s2);//打印\bit\
}
变量的作用域
变量定义在哪个大括号内,就在哪个范围生效
public class TestDemo {
int val = 100; //这是一个成员变量
public static void main4(String[] args) {
{
int a = 99;//这是一个局部变量
}
//System.out.println(a);//这样不行, a只在那个大括号范围内
}
}
注意:在java中没有全局变量概念,只分为成员变量和局部变量
三、常量
常量分为字面值常量和final常量
当我们写了一个数字,这个数字就是字面值常量。
final和C中的 const 类似,定义后便不可再修改。
final int A = 10;
四、类型转换
int 与 long
int a = 10;
long b = a;//4个字节可以给8个字节
System.out.println(b);
int数据可以放到long中,但反过来需要类型转换,
类型转换还要注意 int 不一定能放得下。
long c = 111111111111L;
int d = (int)c;//可以强制类型转换,但int放不下
System.out.println(d);
如果我将int数据和long数据相加,那么结果是什么数据类型呢?
答案是long类型。
int i1 = 10;
long l1 = 20;
long q = i1 + l1;//两个类型相加,类型变为较大的那个
int 与 boolean
int a = 10;
boolean b = true;
b = a; // 编译出错, 提示不兼容的类型
a = b; // 编译出错, 提示不兼容的类型
boolean类型不是值,他们不能相互赋值。
int 与 byte
byte a = 1;
byte b = 2;
byte c = a + b;
上面这串代码会编译失败,因为 'a + b' 是一个int类型的值。
byte a = 1;
byte b = 2;
byte c = (byte)(a + b);//强制类型转换后才可以
但是如果我如以下这样的写法就可以:
byte c1 = 1 + 2;
因为字面值常量相加时,,编译时已经将结果已经变为3了,3作为数据是可以放入byte中的。
int 与 String
他们之间相互转换都有相应的函数,如下:
public static void main(String[] args) {
//int与String转换
//整数变字符串
int num = 10;
String ret = String.valueOf(num);
System.out.println(ret);
//字符串变整数
String str = "123";
int ret1 = Integer.valueOf(str);
System.out.println(ret1);
}
五、运算符
了解了数据类型,总归要进行运算的,让我们来研究一下其中重点:
%
你会运算下面的表达式吗?
public static void main8(String[] args) {
//运算符
System.out.println(-10 % 3);
System.out.println(10 % -3);
System.out.println(-10 % -3);
}
结果如上
+=、-= 、*= 、/= 、%=
用法如同C,这里讲下注意点:
short a = 10;
a = a + 9;
这串代码是不能编译通过的,'a + 9' 是一个int类型,需要强转
但是如果我用 '+=' 就不用:
short a = 10;
a = (short)(a + 9);//这里不转 会报错
a += 9;//这样会自动强制类型转换
&& 、||
public static void main(String[] args) {
System.out.println(10 > 20 && 10 / 0 == 0);//有假就假
System.out.println(10 < 20 || 10 / 0 == 0);//有真就真
}
后面的10 / 0是一个错误,会编译报错,这里来看看是否会运行到此表达式
第一行中开头为假,由于是&&,所以此表达式为假,不运算后面的值
第二行中开头为真,|| 规则是 只要有真,这个表达式就为真,所以不运算后面的值
所以这两个表达式都可编译
>>、<<、>>>
这里的规则和C一样,多了一个 '>>>' 无符号右移,即符号位补0
public static void main(String[] args) {
//>>>符号,无符号右移
//因为普通右移要补符号位,>>>总是补0
System.out.println(-1 >> 1);
System.out.println(-1 >>> 1);
}
感谢你能看到这,如有帮助,欢迎点个赞👍。