一、基本数据类型
1. 基本数据类型的使用
- 如果想要表示整数就使用 int (例如:表示一个人的年龄),表示小数就使用 double(例如:表示一个人的成绩或者是工资);
- 如果描述日期数字或者表示文件或者内存大小(程序中是以字节为单元统计大小的)使用 long;
- 如果要实现内容传递(IO操作、网络编程)或者是编码转换(JSP开发中使用 UTF-8 编码)时使用 byte;
- 如果要想实现逻辑的控制,可以使用boolean 描述(boolean只有 true 和 false两种值);
- 如果要处理中文,使用 char 可以避免乱码问题
2. 转义字符的使用
转义字符 | 描述 |
---|---|
\f | 换页 |
\\ | 反斜线 |
\b | 倒退一格 |
\' | 单引号 |
\r | 归位 |
\" | 双引号 |
\t | 制表符 Tab |
\n | 换行 |
public class DataDemoo05 {
public static void main(String[] args) {
char ch1 = '\"';
char ch2 = '\\';
System.out.println("ch1 = "+ ch1);
System.out.println("ch2 = " + ch2);
System.out.println("\"Hello world!\"");
}
}
3. 基本数据类型的默认值
数据类型 | 默认值 |
---|---|
byte | (byte) 0 |
short | (short) 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | \u0000(空,”) |
boolean | false |
在某些情况下,Java会给这些没有赋初始值的变量一格确切的默认值,这没有任何意义,是没有必要的,但应该保证程序执行时不会有这种未定义值的变量存在。
对于Java 中的基本类型,因为使用频率很高,所以不是使用 new 创建变量,而是使用一个“自动”变量,这个变量直接存储值,并插入栈内存中
通常 new 创建出来的对象都是保存在堆内存中
基本类型的赋值都是直接的,而不像对象,赋予的只是其内存的引用。举个例子,a = b ,如果 b 是基本类型,那么赋值操作会将 b 的值复制一份给变量 a, 此后若 a 的值发生改变是不会影响到 b 的。作为一名程序员,这应该成为我们的常识
如果是为对象赋值,那么结果就不一样了。对一个对象进行操作时,我们实际上操作的是它的引用。所以我们将右边的对象赋予给左边时,赋予的只是该对象的引用。此时,两者指向的堆中的对象还是同一个
4. 数据类型的转换
public class DataDemo08 {
public static void main(String[] args) {
int x = 30;
float y = 22.19f;
System.out.println("x/y = " + (x/y));
System.out.println("10/3.5 = " + (10/3.5));
System.out.println("10/3 = " + (10/3));
}
}
一格整型常量和一个浮点型常量进行计算后,结果也会变为一个浮点型数据
如果是两个 int 类型的常量进行计算的话,最终结果还是 int 类型,而其小数部分将会被忽略掉
任何类型的数据都向 String 转型
(1)两个字符串之间可以通过使用 “+” 进行连接
(2)任何数据类型碰到 String 类型的变量或者常量之后都向 String 类型转换
public static void main(String[] args) {
String str = "test";
int x = 30;
int i=1,j=2;
str = str + x;
System.out.println("str = " + str);
System.out.println("1+2 = " + i + j); // 这里的 + 表示的是字符串连接的含义
System.out.println("1+2 = " + (i+j)); // 表示两个数字相加的结果
}
(欲转换的数据类型)变量名称
- 1
public class Test {
public static void main(String[] args) {
float f = 30.3f;
int x = (int)f;
System.out.println("x = " + x);
System.out.println("10/3 = " + ((float)10/3));
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
二、运算符、表达式与语句
1. 关系运算符
public class Test {
public static void main(String[] args) {
int num = 10;
if(num % 2 ==0){
System.out.println(num + " is even");
}
else {
System.out.println(num + " is odd");
}
num +=1; // 自加操作
num -=1; // 自减操作
System.out.println("num = " + num);
}
}
- 10
- 11
- 12
- 13
- 14
2. 逻辑运算符
逻辑运算符 | 描述 |
---|---|
& | AND,与 |
&& | 短路与 |
| | OR,或 |
|| | 短路或 |
为什么会有两种与和或的操作?
&& 和 &
|| 和 |
(1)对于与操作来说,如果第一个条件为假,则后面不管是真是假,最终的结果都是假。
(2)对于或操作来说,如果第一个条件为真,则后面不管是真是假,最终的结果都是真。
- 1
- 2
- 3
- 4
(1)对于与来说,要求所有的条件都判断,使用短路与如果第一个条件false,则后面的条件将不再判断。
(2)对于或来说,要求所有的条件都判断,使用短路或如果第一个条件为true,则后面的条件将不再判断
测试 & 与 && 的不同:
public class Test {
public static void main(String[] args) {
if(10 != 10 & 10/0 ==0){
System.out.println("条件满足");
}
}A QWE
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
出错的原因在于,与操作要把所有的条件进行判断,所有计算 10/0 时就出现了错误
public class Test {
public static void main(String[] args) {
if(10 != 10 && 10/0 ==0){
System.out.println("条件满足");
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
3. 位运算
逻辑运算符 | 描述 |
---|---|
& | 按位与 |
| | 按位或 |
^ | 异或(相同为0,不同为1) |
~ | 取反 |
<< | 左移位 |
>> | 右移位 |
>>> | 无符号右移位 |
在 Java中所有的数据都是以二进制数据的形式进行运算的,即如果是一个int型变量,要采用位运算的时候,必须将其变为二进制数据。
常见的面试题分析:
如何更快的计算出 2 的 3 次方?
public class Test {
public static void main(String[] args) {
int x = 2;
System.out.println(x << 2); // 向左移2位
}
}
- 1
- 2
- 3
- 4
- 5
- 6
三、选择与循环语句
1. 三目运算语句与 switch 语句
三牧运算符的表达式:
变量 = 条件判断? 表达式1:表达式2;
- 1
- 2
public class Test {
public static void main(String[] args) {
String str = "HELLO";
int flag = 3>2 ? 1:0;
if (flag == 1){
System.out.println("Start switch judgment: ");
}
else {
System.out.println("关于三目运算符的使用");
}
switch (str){
case "HELLO":{
System.out.println("Content is HELLO");
break;
}
case "hello":{
System.out.println("Content is hello");
break;
}
default:{
System.out.println("Note the format of the switch");
}
}
}
}
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
2. 循环结构
- do…while 的使用格式
do{
语句 1;
语句 2;
}while(循环条件判断);
- 1
- 2
- 3
- 4
public class Test {
public static void main(String[] args) {
int x = 1;
int sum = 0;
do{
sum +=x;
x++;
}while (x<=10);
}
}
- 10
- while 循环:在不确定次数但是确定循环结束条件的情况下使用
while(循环条件判断){
语句 1;
语句 2;
}
- 1
- 2
- 3
- 4
public class Test {
public static void main(String[] args) {
int x = 1;
int sum = 0;
while (x <= 10){
sum +=x;
x++;
}
}
}
- 10
- for 循环:确定循环次数的情况下使用
for(赋值初值;判断条件;赋值增减量){
}
- 1
- 2
- 3
public class Test {
public static void main(String[] args) {
int sum = 0;
for (int x=1;x<=10;x++){
sum +=x;
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8