一、Java基本的程序结构
/**
*@description 控制台打印
*@author
*/
public class FirstPro{
public static void main(String[] args){
//控制台打印
System.out.println("Hello,world");
}
}
以上这段程序是最简单的一段程序,它的目的是在控制台输出“hello,world”这句话,以下作简要说明:
- FirstPro作为类的名称,需与文件名称保持一致;该命名遵循了驼峰规则,即类名称所有单词首字母大写,方法名第一个单词首字母小写,其余单词首字母大写,一种约定俗成的规定;
- 每一个java程序都需要有一个main方法作为入口,且必须声明为public;
- java中的注释有三种,第一种是以“//”开头,注释范围一直到该行行尾,即代码中的第二种情况:第二种是用/* 和 */包起来的注释;第三种是文档注释,用于说明类/方法的一些关键信息,包括用途,参数等等。
二、数据类型
java中共包含八种数据类型,分别为4种整型,2种浮点型,1种字符型,1种布尔型:
1.整型
类型 | 存储需求 |
---|---|
int | 4 |
short | 2 |
long | 8 |
byte | 1 |
PS:在Java中,整型的范围与运行该程序的机器无关。例如C++程序中的整型在32位的机器上运行良好,但是在16位机器上可能就会发生数据溢出的情况,但是在Java中则不会,因为其数据类型的取值范围都是固定的,同时,Java中没有无符号的整型。
2.浮点型
类型 | 存储需求 |
---|---|
float | 4 |
double | 8 |
PS:
- double类型虽然所占字节数更多,但是其精度也是float的两倍,在实际使用中一般使用double。
- 浮点计算不适用于无法接受误差的计算中,例如System.out.print(2.0-1.1),结果为0.899999999,因为二进制中无法精确表示1/10,若要进行无误差的计算,需要使用BigDecimal类,后面会学习到。
3.字符型
char类型:用单引号括起来,例如:‘A’。也可用 十六进制表示,例如 \u03C0 表示Π。
4.布尔类型
PS:布尔类型一共只有两个值,true和false,用于逻辑判断,需要注意的是在Java中整型和布尔型是不能互相转换的,即不能用1表示true,0表示false。
三、变量
PS:
- 变量在使用前需要初始化;
- 利用关键词final来指示常量,表示该值只能被赋值一次,常量名全部使用大写字母;
四、运算符
- 特别需要关注的是出发运算,15/2=7,15.0/2=7.5,这里牵扯到隐式的类型转换,即精度低的转换为精度高的,15/7是两个int类型的数据进行计算,因此结果也不会有小数,结果会舍弃小数点后的数据而非四舍五入;
- 当精度高的数据类型转换为精度低的数据类型时,需要进行强制的类型转换,例如,将double类型转为int类型
double x = 9.95;
int ix = (int) x;
//ix = 9
- 如果将某一类型的数据强制转换为另一种数据类型,且这个数据超出了目标数据类型的表示范围,这个数据可能会变成一个完全不相关的值。比如(byte)300的结果为44,原因如下:
byte 的取值范围为-128 ~ 127,假设short x =300; 用二进制表示 0000 0001 0010 1100,而byte只有一个字节,因此只会取后半段,0010 1100 为44;
- Java中支持三元操作符,condition?expression1:expression2,若条件正确则执行冒号前的内容,反之执行冒号后面的;
- 位运算符包括:与(&),或(|),非(~),异或(^),左移(<<),右移(>>),运算规则如下:
- 与(&):0 & 0 = 0; 0 & 1 = 0; 1 & 0 = 0; 1 & 1 = 1;即:两位同时为“1”,结果才为“1”,否则为0;
- 或(|): 0 | 0 = 0;0 | 1 = 1;1 | 0 = 1;1 | 1 = 1;即 :参加运算的两个对象只要有一个为1,其值为1;
- 异或( ^ ):0 ^ 0 = 0; 0 ^ 1 = 1;1 ^ 0 = 1;1 ^ 1 = 0;即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0;
- 非( ~ ):~1=0; ~0=1;
在运用到布尔运算上时,&和 | 也能得到一个布尔值,但和逻辑运算符 && ,||还是存在区别,逻辑运算符是采用短路运算,即如果第一个表达式即可满足就不会计算第二个表达式,而位运算符进行布尔运算则不会如此。