标志符与关键字
标识符的命名规则
- 标志符可以由字母,数字,下划线( _ )和美元符号( $ )组成,不能以数字开头
- 标志符严格区分大小写
- 标志符不能是Java关键字和保留字
- 标志符的命名最好能反映出其作用
关键字
变量与数据类型
变量名的命名规则
- 满足标志符命名规则
- 符合驼峰法命名规则
- 尽量简单,做到见名知意
- 变量名的长度没有限制,但是不要得意忘形
类名的命名规则
- 满足Pascal命名规范,即每个单词的首字母必须大写
数据类型
#字符串也属于引用数据类型
数据类型的字面值及变量定义
变量声明
- 格式:数据类型 变量名
- 例如:int n; long count;
变量赋值
- 使用赋值运算符”=”进行赋值
- 可以在定义变量的时候给变量赋值,即变量的初始化
整型字面值
Java中有三种表示整数的方法:十进制,八进制,十六进制
- 八进制:以数字0开头,包括0-7的数字,如:037,056
- 十六进制:以0x或0X开头,包括0-9的数字,及字母a-f,A-F,如:0x12,0xabcf,0xabcfL(L表示long类型)
- int a = 100;
浮点型字面值
- 浮点型字面值默认情况下表示double类型,也可以在值后加d或D,如:123.43d或123.43D
- 如表示float类型,则需要在字符值后加f或F,如:23.4f或23.4F
- 科学计数法表示:double f1 = 1.23E5; // 相当于1.23 * 10 的5次方,E可以小写
- float f1 = 23.4f;
字符型字面值
- 字符型字面值用单引号内的单个字符表示,如 ‘a’,’b’
- char a = ‘a’
布尔型字面值
- 布尔值只能定义为true和false
- boolean b = true;
字符串字面值
- 双引号引起来的0个或多个字符
- String s = “abc”;
Unicode编码**
- ACSII码不能支持所有的语言,所以有了Unicode码
- Unicode码又称统一码,万国码
- Unicode编码的目标是支持世界上所有的字符集
- char c = ‘\u005d’;
转义字符
数据类型转换
自动类型转换
强制类型转换**
如果A类型的数据表示范围比B类型大,那么将A类型的值赋值给B类型,需要强制类型转换
强制类型转换的格式:(数据类型)数值
如:double d = 123.4; float f= (float)d;
常量
final int N = 5; // 常量一般大写
输入输出
package com.imooc;
import java.util.Scanner;
public class HelloImooc {
private static Scanner s;
public static void main(String[] args) {
System.out.println("请输入数字");
s = new Scanner(System.in);
int n = s.nextInt();
System.out.println("n="+n);
}
}
知识巩固
问题:请写出本题的执行结果,并说明原因
结果:d1==d2
说明:float类型在内存中的存储形式为科学计数法,因此d1/d2的表示都是4.2343242E7
#如果对数值精度要求比较高,要使用java提供的BigDecimal类进行操作
- float,32位单精度浮点型数中,符号位占1位,尾数占23位,阶数占8位。并且float的尾数位(也即是小数点之后,E之前)是23bit,2的23次方约为10的6.923次方。也就是单精度浮点数转化为10进制后,小数可以保证至少6位、最多7位是精确的(也就是和原来的数是一致的)。
- float在内存中是按照科学计数法来存储的
- float在计算过程中是以二进制的形式来计算的
- 在float的小数点后超出第7位的小数,float的精度就会有所丢失,所以当出现第7位小数之后的小数并且有第7位小数的运算,并不是直接忽略了,而是在计算并转化为10进制后,不能精确转化,也就是我们说的精度丢失