一、标识符
1.什么是标识符
就是程序员在定义 java 程序时,自定义的一些名字,例如 helloworld 程序里关键字 class 后跟的 HelloWord,就是我们定义的类名。类名就属于标识符的一种。 标识符除了应用在类名上,还可以用在变量、函数名、包名上。
2.标识符规则
1. 标识符由 26 个英文字符大小写(a~zA~Z)、数字(0~9)、下划线(_)和美元符号($)组成。
2. 不能以数字开头,不能是关键字 。
3. 严格区分大小写
4. 标识符可以为任意长度
例如:ComputeArea,radius,area ,Area <注意:严格区分大小写>
1.2.2 非法标识符
1. class (关键字)
2. 100java(不能以数字开头)
3. Hello java (空格不是组成标识符的元素)
1.2.3 Java 中的标识符命名规范
1、区分大小写: JAVA 大小写敏感
2、见名知意
3、类名: class +类名 : 首字母大写 如: HelloWorld
方法名:方法名() : 驼峰规则 ,首字母小写+第二个起每个单词首字母大写 如 helloWorld
变量名:变量的类型 变量名 ;同理,驼峰规则, 首字母小写+第二个起每个单词首字母大写
常量名:final 类型 常量名 ; 每个字母大写, _分割单词 如: INTEGER_AGE
注意:只是为了增加规范性、可读性而做的一种约定,标识符在定义的时候最好见名知意,提高代码阅读性。
2、关键字
2.1 关键字的概述
Java 的关键字对 java 的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名
2.2 常见的关键字
3、注释
3.1 注释的作用
通过注释提高程序的可读性,是 java 程序的条理更加清晰,易于区分代码行与注释行。另外通常在程序开头加入作者,
时间,版本,要实现的功能等内容注释,方便后来的维护 以及程序员的交流。
3.2 注释的种类
1.单行注释(line comment)用//表示,编译器看到//会忽略该行//后的所文本
2.多行注释(block comment)用/* */表示,编译器看到/*时会搜索接下来的*/,忽略掉/**/之间的文本。
3.文档注释用/** */表示,是 java 特有的注释,其中注释内容可以被 JDK 提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档.
1. 编程习惯:
1. 给那条语句进行说明,注释应该写在该语句的旁边。
2. 单行注释一般写在语句的后面
3. 多行注释和文档注释一般写在语句的上面
注意:文档注释只能出现在类、属性、方法的上面。
4、常量
4.1 常量的概述
常量是指在程序运行过程中其值不能改变的量。
4.2 常量类型
Java 中常量的分类:
整数常量 : 1,45 小数常量 : 1.345
布尔常量 : true,false
字符常量 : 'a','A','0'
字符串常量 :”History” “” 、“a” 、 “ “
null 常量 : 只有一个值 null
转义字符
转义字符的概述:
特殊字符使用\其转化成字符的本身输出,那么使用”\”的字符称作为转移字符。
需求:使用输出语句,打印出带引号的信息例如输出。
System.out.println(“teacher said”java is fun””);编译是无法正常通过的。语法有错误,编译器读到第二个引号就认为是字符串的结束,剩余的不知道怎么处理。如何解决这个问题:java 中使用转义字符来表示特殊的字符。一个转义字符以反斜杠(\)开始。
常用的转义字符:
\r 表示接受键盘输入,相当于按下回车。
\n 表示换行。
\t 制表符,相当于 Table 键
\b 退格键,相当于 Back Space
\’ 单引号
\” 双引号
\\ 表示一个斜杠
A:基本数据类型
1B(byte,字节)= 8 bit(位);
1KB(Kibibyte,千字节)=1024B= 2^10 B;
1MB(Mebibyte,兆字节,百万字节,简称“兆”)=1024KB= 2^20 B;
1GB(Gigabyte,吉字节,十亿字节,又称“千兆”)=1024MB= 2^30 B; TB PB EB ZB…
①整型
占用字节数 比特/位 取值范围
byte(字节型) 1 8 位 [-128 , 127]
short(短整型) 2 16 位 -32768,32767]
int (整型) 4 32 位 [-21 亿, 21 亿]
long(长整型) 8 64 位 +_9223372036854775807
注意:整数数值默认为int类型,如果需要定义一个long类型的变量, 当超出int的范围时,需要在该值后加 l或者L
②浮点型
float(单精度) 4 double(双精度) 8
float默认保留8位数字,double默认保留17位数字
注意:浮点数默认为double类型,如果需要定义一个float类型的 变量,则数值后需要加 f或者F
③字符型(0~65535)
char(字符型) 2 一个字符能存储一个中文汉字 要求:用 ' '将字符括起来, 最多存储一个字符 用于存放字符的数据类型,占用2个字节,采用unicode编码,它 的前128字节编码与ASCII兼容,它的的取值范围是在Unicode编码中 规定的,而Unicode编码规定char的取值范围就是0~65535,没有负值.
④逻辑型(布尔型)
boolean(布尔类型) 占1个bit, 1/8个字节
6.3 变量的声明
相当于造盒子
格式: 类型 名字 [=值,[名字=值….]]
例如:
int i 声明了一个整形的变量 i。
double d 声明了一个 double 数据类型的变量 d
float f 声明了一个 float 数据类型的变量。
备注:变量名的首字母都一般都是以小写字母开始。
6.4 变量的初始化
初始化方式 1: 数据类型 变量名字 = 数值。
int car = 100000
初始化方式 2: 数据类型 变量名字 ;
变量名字 = 数值。
int car ;
car = 10000
1)、变量必须先声明后使用
2)、变量必须存在值才能使用
3)、变量同一个作用域(方法内) 声明时变量名不能相同
7、数据类型的转换
如果两个整数(int)相除会去掉小数部分。如果需要保留小数部分,可以让除数或者被除数变为double 类型的(5 变为 5.0)。其实 Java 是自动的将 int 的那个数变为了 double 类型了也就是 Java 自动的将整数变为了浮点数。例如 5/2.0 其实是 5.0/2.0
7.1 自动类型转换(也叫隐式类型转换)
可以将一个数赋值给更大数值范围的变量,例如可以经 byte 变量赋值给 short 变量可以将 short 变量赋值给 int 变量可以
将 int 变量赋值给 long 变量。
Java 内部其实做了工作就是自动将数值进行了类型提升,就叫做自动类型转换(也叫隐式类型转换)
自动类型转换(也叫隐式类型转换)
要实现自动类型的转换,需要满足两个条件,第一两种类型彼此兼容,第二目标类型取值范围必须大于源类型。所有的数字类型,包括整形和浮点型彼此都可以进行转换。
7.2 强制类型转换(也叫显式类型转换)
不可以将一个数值赋给范围更小数值范围的变量,除非进行类型转换。
当两种类型彼此不兼容,或者目标类型取值范围小于源类型(目标是byte 源是 int)
无法自动转换,此时就需要进行强制类型转换。
强制类型转换需要注意: 损失精度!!
7.3、类型转换的原理
1. 什么时候要用强制类型转换
比如小数部分只想保留整数部分.
一定要清楚要转换的数据在转换后数据的范围内否则会损失精度.
2 表达式的数据类型自动提升
算术表达式
所有的 byte 型、short 型和 char 的值将被提升到 int 型。
如果一个操作数是 long 型,计算结果就是 long 型;
如果一个操作数是 float 型,计算结果就是 float 型;
如果一个操作数是 double 型,计算结果就是 double 型。
分析 System.out.println(‘a’+1)结果?
自动类型提升
(1)boolean类型不参与转换
(2)默认转换 A:从小到大
B:byte,short,char --> int long float double
C:byte,short,char之间是平级的,不相互转换,直接转成 int类型参与运算。
(3)强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式: 目标数据类型 变量名 = (目标数据类型) (被转换的数据);