第一章 java基础语法
一:基本数据类型
java中提供了8种基本数据类型,分别是boolean,short,int,long,float,double.
基本数据类型 | 所占空间大小 | 默认值 | ||
---|---|---|---|---|
char | 2 Bytes | ‘\u0000’ | ||
boolean | 2 Bytes | false | ||
byte | 1 Byte | 0 | ||
short | 2 Bytes | 0 | ||
int | 4 Bytes | 0 | ||
long | 8 Bytes | 0 | ||
float | 4 Bytes | 0.0f | ||
double | 8 Bytes | 0.0 |
每种数据类型都有的数据范围,一旦超出该范围,便会报错
另外,**整数常量默认是int类型,浮点数常量默认是double类型.**如果想要声明long类型的数据可以在整形字面量后加上l或者L,想要声明float类型的数据可以在浮点型字面量后加上f或者F.
public static void main(){
// float f = 3.14; Error: double -> float
float f1 = 3.14f;
float f2 = 3.14F;
double d = 3.14;
}
在进行数值运算时,除了boolean类型的基本数据类型不能参于运算外,会按照类型的数值范围进行数据类型转换.如果从数值范围低的转化为数值范围高的,编译器会进行自动类型转换.但是如果从数据范围高的转换为数据范围低的必须进行强制类型转换,否则就会报错.
二: 基本数据类型的包装类
java提供了对应基本数据的包装类.他们分别是:
-
Character
-
Boolean
-
Byte
-
Short
-
Integer
-
Long
-
Float
-
Double
包装类能够自动实现装箱和拆箱.装箱:基本数据类型->对应包装类. 拆箱:包装类->对应基本数据类型.
其中的包装类提供了一个方法,能将字符串转为为对应的基本数据类型或包装类.例如将字符串转化为int类型的数值.
三:输入和输出语句
输入语句
java在System.util.Scanner包下提供一个标准输入类,下面是Scanner的基本声明及使用方法.
Scanner input = new Scanner(System.in); //从控制台获取数据
int i = input.nextInt(); //获取一个整数,如果输入数据不是整数,那么就会报错
double d = input.nextDouble();
String s1 = input.next(); //获取不含空格的字符串
String s2 = input.nextline(); //获取包含空格的字符串
input.close(); // 关闭输入流,防止内存泄漏
- 像nextInt(),nextDouble()等获取int,double的方法也适用于获取其他的基本数据类型
- 使用完Scanner类应该关闭输入流,防止内存泄漏
输出语句
主要有三种输出语句.分别是:
-
System.out.println() 输出语句后会在行末换行
-
System.out.print() 输出语句后不会在行末换行
-
System.out.printf() 格式化字符串输出语句,这个语句和c语言中的printf用法基本一样.注意没有%.lf,所以double类型用%.f输出. 下面给出一些常用的格式转化.
格式 作用 例子 %d 输出整型 %f 输出浮点类型(float,double) %nd 指明占多少域宽,加负号会从右往左算 %.nf 输出n位小数 %.2f 保留两位小数 %0nd 从左到右占多少域宽,不足时前面补0 %.02d 输出两位数 如果指明占多少域宽,所指明域宽比数字所占域宽还小时不生效. 如 :
System.out.printf("%2d\n"123); // 输出123 System.out.printf("%02d\n",1); // 输出01 System.out.printf("(%2d)\n)",1); // 输出( 1) System,out.printf("(%-2d)\n",1); // 输出(1 )
赋值语句
注意如果直接赋值的话可能会报错,建议使用复合赋值语句.
public class Solution{
public static void main(){
char c = 'a';
c = c + 1; // Error int -> char
c += 1; // correct
// 相当于
// c = (char)(c + 1);
}
}
使用复合赋值语句编译器会进行隐式类型转换,如上面的代码所示.
四:流程控制语句
条件语句
if(expression): { statement1 …} 如果逻辑表示式为真,那么执行{}内的语句.
- 如果只有一个语句,{} 可省略
if-else语句: 如果if内表示式为真,执行statement1…; 否则执行else里面的statement2…
if(expresion1){
statement1...;
}else{
statement2...;
}
if-else嵌套: 按顺序执行,遇到一个表达式为真执行该代码块内的语句,不再判断下去.
int a = 0;
if(a > 0){
System.out.println("1");
}else if(a == 0){
System.out.println("2");
}else{
System.out.println("3");
}
// 输出: 3
逻辑运算符:具有短路原则
- expression1|| expresion2 前者为真时不再执行后者
- expression1 && expresion2前者为假时不再执行后者
- 判断某个变量的值是否相等 ==.注意不是’='号
循环语句
for(初始化;判断条件;每轮执行的逻辑)
- 如果已知循环的次数,推荐使用for循环
while(判断条件)
- 如果不知道循环的次数,但循环满足某个条件用while循环
- for-each语句,用于遍历数组或者集合容器.
int[] arr = new int[10]; //声明长度为10的数组
Arrays.fill(arr,1); //将数组所有内容赋值为1
for(int i : arr){
System.out.print(i + " "); // 1 1 1 1 1 1 1 1 1 1
}