Java的一些基础语法
注释、标识符
-
单行注释://
-
多行注释:/ * 文字 * /
-
文档注释:/ ** 文字 */
表示符号以字母、美元符或下划线开始如String a = “变量”
类型转换
运算中,不同类型的数据先转化为同一类型,然后进行运算
数据类型
Java是强类型定义语言,要求所有变量先定义后使用,安全性高
Java的基本数据类型有:
-
整数类型:byte(只可表示-128到127)、short(-32768到32767)、int、long
long num4 = 30L;//long类型要在数字后面加L
-
浮点类型:float(可表示7位有效数字)、double(常用)
float num5 = 40.2F;//加F double num6 = 3.14151111858945;
-
字符类型:char
char类型占两个字节并且没有符号位,表示范围:0-65533
注意char是用来表示单个字符的,多个字符连起来的用String类char name = 'A';//单个字符 String name2 = "AAAA";//这里String是类不是基本数据类型
-
boolean类型:
//boolean代表是非
boolean flag = true;
boolean flag2 = false;
基本数据类型的常见问题:
整数拓展
//进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;//十进制
int i2 = 010;//八进制
int i3 = 0x10;//十六进制0x 0~9 A~F F相当于16
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
结果是:
浮点数拓展
银行业务怎么表示?钱 (使用float和double会有问题)
以下有
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
的结果为:
而
float d1 = 2312121213123156f;
float d2 = d1+1;
System.out.println(d1==d2);
的结果为true。由于float表示的范围有限,所以太长的值比较的结果会是一个大约数,存在舍入误差。所以最好完全舍去使用浮点数进行比较。银行业务要用BigDecimal这个数学工具类来实现。
另外定义大数字如一亿时,可
int money = 10_0000_0000;
这样子的代码便于观察,下划线在结果中不会被输出
int money = 10_0000_0000;
int years = 20;
long total = money*years;
System.out.println(total);
的输出是-1474836480。可以看到total是long类型的,但是最终的结果是由于计算时溢出导致的,在转换为long之前由于int范围不够,就已经出现了问题,可用下面代码解决。
long total2 = money*(long)years;
这样输出就是正常结果。
字符拓展
所有的字符本质还是数字,可以使用强制转换的方法把char换成int类型(Unicode表 如97=‘a’),但在转换过程中也要注意内存溢出的问题,且要注意精度,如:
System.out.println((int)-15.89);
的结果是-15。
而
char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char)d);
输出为98和b,说明:
- 由高转低(char转int)是自动转换,无须强转
- 第二个输出那里b值是看Unicode表对应的。
转义字符
常用的\t是制表符,\n是换行
System.out.println("Hello\tWorld");
类型转换
自动转换是指从小类型到大类型
例如int或char转换为double
byte b1 = 10;
short s1 = 20;
s1 = b1;
//表示把变量b1的值赋给s1,相当于从byte到short
强制转换是从大到小的
byte b1 = 10;
short s1 = 20;
b1 = (byte)s1;
但是会造成数据损失
布尔值拓展
下面两汉代码的意义是一样的
boolean flag = true;
if (flag==true){
}
if (flag){
}
自动类型转换是指从小类型到大类型的转换;强制类型转换就是从大类型到小类型的转换
引用类型
类、接口、数组