JAVA基础语法(上)
一、注释、标识符、关键字
1.注释
注释并不会被执行,是为了增强代码的可读性
单行注释
public class Hello {
public static void main(String[] args){
//单行注释
//只能注释一行文字
System.out.println("hello world!");
}
}
多行注释
public class Hello {
public static void main(String[] args){
/*
多行注释
多行注释
多行注释
可以注释一段文字
*/
System.out.println("hello world!");
}
}
文档注释
public class Hello {
public static void main(String[] args){
/**
文档注释,在Java Doc详细记载
*/
System.out.println("hello world!");
}
}
2.标识符
(1)所有标识符只能以字母(A-Z、a-z),美元符-$,或者下划线 _ 开始。(标识符大小写敏感)
(2)不能使用关键字作为变量名。
(3)可以使用中文,但不建议使用。
二、数据类型
Java是强类型语言,要求变量的使用严格合乎规定,所有变量必须先定义后才能使用
1.基本数据类型
(1)数值型
**整数型:**byte(1字节)、short(2字节)、int(4字节)、long(8字节)
**浮点型:**float(4字节)、double(8字节)
**字符型:**char(2字节)
//整形
int num1 = 10;
byte num2 = 20;
short num3 = 30;
long num4 = 40L;
//浮点型
float num5 = 10.1F;
double num6 = 10.1;
//字符型
char name = 'a';
//字符串类型String,String不是关键字,是类
String = "awtgu13124";
(2)boolean类型
占一位,其值只有True和False
boolean yes = true;
boolean no = false;
2.引用数据类型
除基本类型外,其余都是引用类型,包括 类、接口、数组 等
3.拓展(面试问题)
(1)整数拓展:进制问题
public class Test {
public static void main(String[] args){
//二进制-0b 八进制-0 十六进制-0x
int i = 10;
int i2 = 0b10;
int i3 = 010;
int i4 = 0x10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
}
}
输出结果分别为
i = 10;
i2 = 2;
i3 = 8;
i4 = 16;
(2)浮点数拓展
浮点数是有限的、离散的,具有舍入误差的,它只能接近但不能等于某数值
浮点数是有限的、离散的,具有舍入误差的,它只能接近但不能等于某数值
浮点数是有限的、离散的,具有舍入误差的,它只能接近但不能等于某数值
public class Test {
public static void main(String[] args){
float f = 0.1f;
double b = 1.0/10;
System.out.println(f);
System.out.println(b);
System.out.println(f==b);
}
}
输出结果为
0.1 0.1 false
所以最好完全避免使用浮点数进行比较
所以最好完全避免使用浮点数进行比较
所以最好完全避免使用浮点数进行比较
在银行业务中,为避免出现错误,我们使用数学工具类 —— bigDecimal进行计算。
(3)字符拓展
所有的字符本质还是数字
Unicode编码,2字节,0-65536 --> U0000-UFFFF
public class Test {
public static void main(String[] args){
char c = 'a';
char c2 = '\u0065'; // '\'为转义字符
System.out.println(c);
System.out.println((int)c); //强制类型转换
System.out.println(c2);
}
}
输出结果
a
97
a
(4)转义符
\t 制表符
\n 换行符
…
public class Hello {
public static void main(String[] args){
System.out.println("hello\tworld\n!");
}
}
输出结果
hello world
!
三、类型转换
低----------------------------------------------------------------------->高
byte -> short -> char -> int -> long -> float -> double
在运算中,不同类型的数据先转换为同一类型,然后进行运算
*注意:
1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把高容量转换为低容量时,强制转换
4. 转换的时候可能存在内存溢出,或者精度问题
1.低到高(自动转换)
public class Test {
public static void main(String[] args){
int i = 10;
double j = i;
char c = 'a';
int d = c + 1;
System.out.println(j);
System.out.println(d);
}
}
输出结果
10.0
98 //字符类型本质也是数字,a对应的码值为97,char类型自动转换为整形
2.高到低(强制转换)
**强制类型转换 (类型)变量名 **
public class Test {
public static void main(String[] args){
int i = 128;
byte j = (byte)i;
float i2 = 10.1f;
int j2 = int(i2);
int i3 = 97;
char j3 = char(i3);
System.out.println(j);
System.out.println(j2);
System.out.println(j3);
}
}
输出结果
-128 //因为byte类型的取值范围是 -128~127 ,128超出范围,出现溢出,所以为-128
10 //精度问题,浮点数转换为整型时,直接舍去小数部分,不采取四舍五入
a
3.常见问题
操作较大数的时候,注意溢出问题
public class Test {
public static void main(String[] args){
int salary = 10_0000_0000; //JDK7之后新特性,数字之间可用下划线分割
int years = 20;
int total = salary*years;
long total2 = salary*years;
long total3 = salary*((long)years);
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
}
}
输出结果
-1474836480 //计算时出现溢出
-1474836480 //计算的两个数值均为int类型,转换之前已经出现问题
200000000 //计算前先进行了自动类型转换