Java语法基础
Java语法基础
环境准备与命令
jdk = jre + 开发工具包
jre = Java runtime environment + JVM
Jvm: 1.加载class文件;2.管理并分配内存;3.执行垃圾回收机制。
环境变量准备
在环境变量中配置path
JAVA_HOME=jdk安装路径bin的上层目录
path=%JAVA_HOME%\bin
相关命令
java分为两部分:编译、运行
javac:将.java文件编译成.class文件。
词法分析 --> 语法分析 --> 语义分析和中间代码生成 --> 优化 --> 目标代码生成。
java:负责运行部分。会启动Jvm加载运行时所需要的类库,并对class文件进行执行。一个文件要被执行,必须有一个起始点,这个起始点就是main函数。
一、关键字和保留字
关键字(keyword)的定义个特点:
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都是小写
保留字(reserved word):现有的java版本尚未使用,以后版本可能作为关键字使用。自己命名标识符的时候要避免使用这些保留字。
二、标识符
标识符(identifier):
java对各种变量、方法和类等要素命名时使用的字符序列称为标识符。
由26英文字母,数字,_,$等组成
注意:①数字不可以开头 ②不可以使用关键字。
三、java中的命名规范(不遵守也能通过编译,建议遵守)
包名:多个单词组成时所有字母都要小写。com.xxx.user.action···
类名、接口名: 由多个单词组成时,所有单词首字母大写。HelloWorld
变量名、方法名:多个单词组成时,第一个单词首字母小写,之后开始首字母大写。getAddress()
常量名:所有字母都要大写。
四、变量
变量的概念
①内存中的一个存储区域;
②该区域内的数据可以在一定的范围内不断变化;
③变量是程序中最基本的存储单元。包含变量类型、变量名、值
变量的作用
用于在内存中保存数据
使用注意
java中每个变量必须先声明,后使用;
使用变量名来访问该区域的数据;
变量的作用域:其定义所有在的{}内;
变量只有在其作用域内才有效;
同一个作用域内,不能定义重名的变量;
五、变量类型
1、变量大小及取值范围
2、变量使用
整数型变量:byte、short、int、long
Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性。
- java的整型常量默认值是int型,声明long型常量后面需要加‘l’或者‘L’
- java程序中变量通常声明为int型,除非不足以表示较大的数,才是用long
- 计算机中最小的存储单位:bit。
- 计算机中基本的存储单元:byte。 1 byte = 8 bit
long a = 123123; //123123作为int,向上转为long型 System.out.println(a); long b = 12312312312312; //因为12312312312312超过了int表示的最大范围,不能通过编译 System.out.println(b);
123123在int范围内,所以可以进行转换。
12312312312312超过了int表示的最大范围,后面必须加‘l’或‘L’
浮点类型:float、double
浮点型常量有两种表示形式:
1.十进制数形式:5.12 512.0f .512 (必须有小数点)
2.科学计数法形式:5.12e2
float:单精度,尾数可以精确到7位有效数字。在很多情况下,精度很难满足需求。
double:双精度,精度是float的两倍。通常采用此类型。
Java的浮点型常来常量默认为double型,声明float型常量,须后面加‘f’或‘F’
不加f或F和long的情况类似。如果定义时不以f结尾,默认为double类型。从double转到float存在精度损失。
float
long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平分正负,数值范围是-2^63 ~ 2^63-1。而float在内存中占4个字节,共32位,但是浮点数在内存中是这样的。
也就是说,浮点数在内存中的二进制不是直接转换为十进制数值的,而是按照上述公式计算而来,通过这个公式,虽然只用到了4个字节,但是浮点数却比long型最大值要大。这也就是为什么在数据转换时,long类型转换为float类型的根本原因所在。
字符型:char
- char型数据用来表示通常意义上的字符:只能放一个字符,包括字母、数字、汉字等任意一个字符,可以为空,但不能引号中什么都没有(空格也没)。
- java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字或其他任意一个字符。
- char类型是可以进行运算的,因为它都有对应的Unicode码。
变量间运算
这里说的只是7中基本数据类型间的运算,不包含boolean类型
- 1.自动类型提升
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte、char、short-->int-->long-->float-->double
特别的,当byte、char、short三种类型变量做运算时,结果为int类型,结果必须用int型变量接收。
- 2.强制类型转换
将容量大的向容量小的数据类型的变量转换。可能会造成精度损失。
int 4个字节共32位
byte 1个字节共8位
int 128 = 0000 0000 0000 0000 0000 0000 1000 0000
byte i3 = 0000 0000
用byte接收int型数据,将前面的0截取掉,剩余1000 0000。1表示符号位,-128.
引用数据类型:String
- 声明时必须使用双引号,也不能强转。
String可以和8种基本数据类型变量做运算,且运算只能是连接运算。