常量:
在Java语言中,主要是利用关键字final来定义一个常量。 常量一旦被初始化后不能再更改其值。
声明格式为:
1 |
|
/**
* 测试常量
* @author Memorial
*
*/
public class TestConstant {
public static void main(String[] args) {
int age=23;
final String NAME="Memrial";
final double PI=3.14;
//PI=3.15;//编译错误,不能再被赋值!
double r=4;
double area=PI*r*r;
double circle=2*PI*r;
System.out.println("area="+area);
System.out.println("circle="+circle);
}
}
输出:
area=50.24
circle=25.12
为了更好的区分和表述,一般将1、2、3、’a’、’b’、true、false、”helloWorld”等称为字面常量,而使用final修饰的PI等称为符号常量。
老鸟建议
变量和常量命名规范(规范是程序员的基本准则,不规范会直接损害你的个人形象):
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则: monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则: Man, GoodMan
-
方法名:首字母小写和驼峰原则: run(), runRun()
基本数据类型:
Java中定义了3类8种基本数据类型
-
数值型- byte、 short、int、 long、float、 double
-
字符型- char
-
布尔型-boolean
图2-2 数据类型的分类
注意事项
-
引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!
整型常量:
Java 语言整型常量的四种表示形式
-
十进制整数,如:99, -500, 0
-
八进制整数,要求以 0 开头,如:015
-
十六进制数,要求 0x 或 0X 开头,如:0x15
-
二进制数,要求0b或0B开头,如:0b01110011
浮点型常量:
Java语言的整型常数默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ 。
带小数的数据在Java中称为浮点型。浮点型可分为float类型和double类型。
表2-5浮点型数据类型 | ||
类型 | 占用存储空间 | 表数范围 |
float | 4字节 | -3.403E38~3.403E38 |
double | 8字节 | -1.798E308~1.798E308 |
float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。浮点型常量默认类型也是double。
Java浮点类型常量有两种表示形式
-
十进制数形式,例如:3.14 314.0 0.314
-
科学记数法形式,如314e2 314E2 314E-2
【示例2-11】使用科学记数法给浮点型变量赋值
1 2 |
|
float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
【示例2-12】float类型赋值时需要添加后缀F/f
1 2 3 |
|
老鸟建议
-
浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
浮点型数据的比较
//浮点数是不精确的,一定不要用于比较!
//浮点数的比较一
float f=0.1f;
double d=1.0/1.0;
System.out.println(f==d);
//浮点型比较二
float d1=423432423f;
float d2 =d1+1;
if(d1==d2) {
System.out.println("d1==d2");//输出结果为d1==d2
}else {
System.out.println("d1!=d2");
}
运行以上两个示例,发现示一的结果是“false”,二的输出结果是“d1==d2”。这是因为由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。 浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近, 但不等于。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。
java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
菜鸟雷区
1.不要使用浮点数进行比较!很多新人甚至很多理论不扎实的有工作经验的程序员也会犯这个错误!需要比较请使用BigDecimal类
【示例2-15】使用BigDecimal进行浮点数的比较
import java.math.*;
public class Main {
public static void main(String[] args) {
//使用精确浮点型,推荐使用BigDecimal
BigDecimal bd=BigDecimal.valueOf(1.0);
bd=bd.subtract(BigDecimal.valueOf(0.1));//subtract指减法
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
System.out.println(bd);//0.5
System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);
BigDecimal bd2=BigDecimal.valueOf(0.1);
BigDecimal bd3=BigDecimal.valueOf(1.0/10);
System.out.println(bd2.equals(bd3));
}
}
输出:
0.5
0.5000000000000001
true
-
默认是double类型
-
浮点数存在舍入误差,数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
-
避免比较中使用浮点数,需要比较请使用BigDecimal类
使用Scanner获取键盘的输入
import java.util.*;
/**
* 测试获得键盘输入
* @param Memorial
*/
public class TestScanner {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);//system.in作为一个参数
System.out.println("请输入名字:");
String name=scanner.nextLine();//使用变量存储输入的信息
System.out.println("请输入你的爱好:");
String favor=scanner.nextLine();
System.out.println("请输入你的年龄:");
int age =scanner.nextInt();//因为是整数所以用nextInt()方法,如果是小数用Double
System.out.println("##############");
System.out.println(name);
System.out.println(favor);
System.out.println("来到地球的天数:"+age*365);
System.out.println("离开地球的天数:"+(72-age)*365);
}
}
输出:
请输入名字:
Memorial
请输入你的爱好:
敲键盘
23
请输入你的年龄:
23
##############
Memorial
敲键盘
来到地球的天数:8395
离开地球的天数:17885
总结:
1.注释可以提高程序的可读性。可划分为
2.单行注释 //
3.多行注释 /*...*/
4.文档注释 /**...*/
5.标识符的命名规则:
6.标识符必须以字母、下划线_、美元符号$开头。
7.标识符其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
8.Java 标识符大小写敏感,且长度无限制。
9.标识符不可以是Java的关键字。
10.标识符的命名规范
11.表示类名的标识符:每个单词的首字母大写,如Man, GoodMan
12.表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为“驼峰原则”,如eat(), eatFood()
13.变量的声明格式:
type varName [=value] [,varName[=value]...];
14.变量的分类:局部变量、实例变量、静态变量
15.常量的声名格式
final type varName = value ;
16.Java的数据类型可分为基本数据类型和引用数据类,基本数据类型的分类如下:
17.整型变量:byte、short、int、long
18.浮点型:float、double
19.字符型:char
20.布尔型:boolean,值为true或者false
21.Java语言支持的运算符可分为:
22.算术运算符: +,-,*,/,%,++,--
23.赋值运算符 =
24.扩展赋值运算符:+=,-=,*=,/=
25.关系运算符: >,<,>=,<=,==,!= ,instanceof
26.逻辑运算符: &&,||,!
27.位运算符: &,|,^,~ , >>,<<,>>>
28.字符串连接符:+
29.条件运算符 ?:
30.基本数据类型的类型转换可分为:
31.自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型
32.强制类型转换:用于显式的转换一个数值的类型,语法格式:(type)var
33.键盘的输入:Scanner类的使用