变量和类型
运算符
变量指的是程序运行时可变的量,相当于开辟一块内存空间来保存这些数据,类型是对变量的种类进行了划分,不同的类型变量具有不同的特性。
1.1整型变量
代表示例:
public class HelloWorld {
public static void main(String[] args) {
int num=10;
System.out.println(num);
}
}
int表示变量是整型,在Java中,一个int占4个字节,包装类为:Integer。
public class HelloWorld {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}
用以上代码可以查看Java中的整型数据范围。
1.2长整型变量
代表示例:
public class HelloWorld {
public static void main(String[] args) {
long num=10L;
System.out.println(num);
}
}
需要强调的是:必须要在10后面加L,否则会被默认当做整型。
long类型占8个字节,表示数据范围同样可以用以下代码测试:
public class HelloWorld {
public static void main(String[] args) {
// long num=10L;
// System.out.println(num);
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
}
}
1.3双精度浮点型变量(重点)
代码示例:
public class HelloWorld {
public static void main(String[] args) {
double num=1.0;
System.out.println(num);
}
}
在Java中,int除以int的值仍然是int,会直接舍弃小数部分,如下:
public class HelloWorld {
public static void main(String[] args) {
int a=1;
int b=2;
System.out.println(a/b);
}
结果如下:
D:\JavaCode\20200716>java HelloWorld
0
如果想要得到0.5,需要使用double类型计算,如下:
public class HelloWorld {
public static void main(String[] args) {
double a=1.0;
double b=2.0;
System.out.println(a/b);
}
}
结果如下:
D:\JavaCode\20200716>java HelloWorld
0.5
1.4单精度浮点型变量
代码示例:
public class HelloWorld {
public static void main(String[] args) {
float num=1.0f;
System.out.println(num);
}
}
浮点型变量后面应该加上f,否则系统会认为其是double型。
1.6字节类型变量
代码示例:
public class HelloWorld {
public static void main(String[] args) {
byte value=0;
System.out.println(value);
}
}
字节类型表示的也是整数,但是只占一个类型,字节类型和字符类型也互不相干。
1.7短整型变量
代码如下:
public class HelloWorld {
public static void main(String[] args) {
short value=0;
System.out.println(value);
}
}
short占用两个字节,表示的数据范围较小。
1.8布尔类型变量
代码示例:
public class HelloWorld {
public static void main(String[] args) {
boolean value=true;
System.out.println(value);
}
}
- boolean类型的变量只有两种取值,true表示真,false表示假
- Java的boolean类型和int不能相互转换,不存在0表示假,非0表示真。
- boolean类型有些JVM的实现是占1个字节,有些是占1个比特位,没有明确的规定。
1.9字符串类型变量
- Java使用双引号+若干字符的方式表示字符串字面值
- String不是基本类型,而是引用类型
代码示例:
public class HelloWorld {
public static void main(String[] args) {
String name="zhangsan";
System.out.println(name);
}
}
字符串中的一些特定的不太方便直接表示的字符需要进行转义。
代码示例:
public class HelloWorld {
public static void main(String[] args) {
String name="my name is \"zhangsan\"";
System.out.println(name);
}
}
输出结果:
D:\JavaCode\20200716>java HelloWorld
my name is "zhangsan"
常见的转义字符如下:
转义字符 | 解释 |
---|---|
\n | 换行 |
\t | 水平制表符 |
\’ | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
字符串+的操作
代码示例:
public class HelloWorld {
public static void main(String[] args) {
String a="hello";
String b="world";
String c=a+b;
System.out.println(c);
}
}
运行结果:
D:\JavaCode\20200716>java HelloWorld
helloworld
常量
final关键字修饰的常量,被定以后就不能修改,要初始化才能使用。
类型转换
- 大类型赋值给小类型,一定要强制类型转换
- int和boolean或其他数据和boolean不能转换
- byte表示的数据范围是-128->+127,不能超出其范围,否则会报错。
数值提升问题
- 不同类型的数据混合运算,范围小的会提升成范围大的
- 对于short,byte这种比4个字节小的类型,会先提升成4个字节的int再运算。
代码示例:
public class Test {
public static void main(String[] args) {
byte a=1;
byte b=10;
byte c=a+b;
System.out.println(c);
}
}
运行结果:
PS D:\JavaCode\20200717> javac -encoding utf-8 Test.java
Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失
byte c=a+b;
^
1 个错误
用强制类型转换:
public class Test {
public static void main(String[] args) {
byte a=1;
byte b=10;
byte c=(byte)(a+b);
System.out.println(c);
}
}
结果如下:
PS D:\JavaCode\20200717>
javac -encoding utf-8 Test.java
PS D:\JavaCode\20200717> java Test
11
int和string之间的转换
int转string
直接上代码:
public class Test {
public static void main(String[] args) {
int a=10;
String str1=a+"ab";
System.out.println(str1);
}
}
结果如下:
PS D:\JavaCode\20200717> java Test
10ab
String转int
public class Test {
public static void main(String[] args) {
String str="100";
int num=Integer.parseInt(str);
System.out.println(num);
}
}
运算符
基本运算符 + - * / %
注意两个代码:
第一个:
public class Test {
public static void main(String[] args) {
int a=10;
a=a++;
System.out.println(a);
}
}
结果如下:
PS D:\JavaCode\20200717> java Test
10
第二个:
public class Test {
public static void main(String[] args) {
System.out.println(10%3);
System.out.println(10%-3);
System.out.println(-10%3);
System.out.println(-10%-3);
}
}
结果如下:
PS D:\JavaCode\20200717> java Test
1
1
-1
-1
关系运算符:== != < > <= >=
关系运算符的表达式返回值都是Boolean类型
逻辑运算符&& || !
逻辑与&&:两个操作数都为true,结果为true,否则结果为false
逻辑或||:两个操作数都为false,结果为false,否则结果为true
逻辑非!:操作数与结果数恰好相反。
位运算符& | ~ ^
按位与&:同为1,结果为1,否则为0
按位或|:同为0,结果为0,否则为1
按位异或^:相异为1,相同为0
按位取反~:0转1,1转0
要努力呀~想的很远,更要努力啦!