第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换、运算规则和标识符命名风格
文章目录
第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换、运算规则和标识符命名风格一、Java语法基础1.标识符2.关键字3.注释4.变量5.常量二、数据类型1.基本类型介绍2.引用类型三、基本类型的字面值1.整数字面值是int类型2.byte,short,char三种比int小的整数可以用范围内的值直接赋值3.浮点数的字面值是double类型4.字面值后缀只有L D F5.进制前缀四、基本类型的类型转换1.自动类型转换2.强制类型转换五、运算规则1.计算结果的数据类型,与最大数据类型一致2.byte,short,char三种比int小的整数,运算时会先自动转换成int3.整数运算溢出4.浮点数运算不精确5.浮点数的特殊值一、Java语法基础
1.标识符
标识符可以简单的理解成一个名字。
在Java中,我们需要标识代码的很多元素,包括类名、方法、字段、变量、包名等等。我们选择的那个名称就称为标识符,一个正确的标识符需要遵循以下规则:
标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符不能以数字开头标识符严格区分大小写标识符的命名最好能反映出其作用,做到见名知意标识符不能是Java的关键字
2.关键字
关键字一律用小写字母标识,按其用途划分为如下几组:
用于数据类型的关键字有 boolean、byte、char、 double、 false、float、int、long、new、short、true、void、instanceof用于语句的关键字有 break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super用于修饰的关键字有 abstract、final、native、private、 protected、public、static、synchronized、transient、 volatile用于方法、类、接口、包和异常的关键字有 class、 extends、 implements、interface、 package、import、throws保留关键字,没有具体含义的有两个:goto 和 const还有些关键字,如 cat、 future、 generic、innerr、 operator、 outer、rest、var等都是Java保留的没有意义的关键字另外,Java还有3个保留字:true、false、null。它们不是关键字,而是文字。包含Java定义的值。和关键字一样,它们也不可以作为标识符使用
3.注释
几乎所有编程语言都允许程序员在代码中输入注释,因为编译器会忽略注释,所以注释并不会影响程序的运行结果
注释的真正作用是: 它可以向任何阅读代码的人描述或者解释程序的实现思路,如何使用以及其它任何相关信息, 提高代码的可读性,方便后期的维护与复用。
Java的注释有3种:
单行注释::注释单行内容
格式:每行都以”//”开头.
多行注释:注释多行内容,虽然叫多行注释,也可注释单行内容
格式::以” /* ”开头, 以” * / ”结束
文档注释: 一般用来注释类和方法,通过注释内容来记录类或者方法的信息
格式:以“ /** ”开头。 以“ */ ”结尾
4.变量
在JAVA中,我们需要记录一些数据,但这些数据的值是不固定的,总在变,我们可以把这些数据理解为变量
我们通过三个元素来描述变量:变量类型、变量名以及变量值
int age = 18; //声明int类型的变量并赋值String tel ; //声明String类型的变量
注意:
变量名必须是一个有效的标识符变量名不可以使用java关键字变量名不能重复
5.常量
常量在程序运行时是不能被修改的
二、数据类型
1.基本类型介绍
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据
byte:
byte 数据类型是8位、有符号的,以二进制补码表示的整数最小值是 -2^7最大值是 2^7-1默认值是 0byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一字节空间:1
short:
short 数据类型是 16 位、有符号的以二进制补码表示的整数最小值是 -2^15最大值是 2^15 - 1Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一默认值是 0字节空间:2
int:
int 数据类型是32位、有符号的以二进制补码表示的整数最小值是 -2^31最大值是 2^31 - 1一般地整型变量默认为 int 类型默认值是 0字节空间:4
long:
long 数据类型是 64 位、有符号的以二进制补码表示的整数最小值是-2^63最大值是 2^63 -1这种类型主要使用在需要比较大整数的系统上默认值是 0L字节空间:8
float:
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数单精度,用于对小数部分的精度要求不高float 在储存大型浮点数组的时候可节省内存空间默认值是 0.0f浮点数不能用来表示精确的值,如货币字节空间:4
double:
double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数浮点数的默认类型为 double 类型双精度,用于需要精确的小数部分并且操作值很大时double类型同样不能表示精确的值,如货币默认值是 0.0d字节空间:8
boolean:
boolean数据类型表示一位的信息只有两个取值:true 和 false这种类型只作为一种标志来记录 true/false 情况默认值是 false字节空间:1
char:
char 类型是一个单一的 16 位 Unicode 字符最小值是 \u0000(十进制等效值为 0)最大值是 \uffff(即为 65535)char 数据类型可以储存任何字符字节空间:2
2.引用类型
在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了
对象、数组都是引用数据类型所有引用类型的默认值都是null一个引用变量可以用来引用任何与之兼容的类型
三、基本类型的字面值
1.整数字面值是int类型
只要写一个整数,它就被认为是 int 类型,但是必须在 int 的取值范围内
int x = 99999999999999;//错误,超出 int 取值范围
long x = 99999999999999;//错误,赋值运算符右边还是被认为是 int 类型,仍超出 int 取值范围
long x = 99999999999999L;//正确,赋值运算符右边是 long 类型
2.byte,short,char三种比int小的整数可以用范围内的值直接赋值
byte b1 = 127;//正确
byte b2 = 128;//错误,超出 byte 范围
3.浮点数的字面值是double类型
与第一条类似
double r = 3.14;//正确
float r = 3.14;//错误,赋值运算符右边被认为是 double 类型
4.字面值后缀只有L D F
long x =99999999999L;//字面值是int类型,需转成long类型的数据,加字面值后缀L即可
float b = 3.0F;//3.0字面值是double类型,加后缀F会变成float类型
double d = 3D;//3字面值是int类型,加后缀D,会变成double类型
5.进制前缀
0b - 标识这是2进制,如:0b0101
0 - 标识这是8进制,如: 023
0x - 标识这是16进制,如: 0x0001
\u -标识这是char类型,属于16进制
四、基本类型的类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算
数据类型转换必须满足如下规则:
不能对boolean类型进行类型转换不能把对象类型转换成不相关类的对象在把容量大的类型转换为容量小的类型时必须使用强制类型转换转换过程中可能导致溢出或损失精度浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
1.自动类型转换
必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型
2.强制类型转换
条件是转换的数据类型必须是兼容的
格式:(type)value,type是要强制类型转换后的数据类型 实例:
public class QiangZhiZhuanHuan{public static void main(String[] args){int i1 = 123;byte b = (byte)i1;//强制类型转换为byteSystem.out.println("int强制类型转换为byte后的值等于"+b);}}
五、运算规则
1.计算结果的数据类型,与最大数据类型一致
2.byte,short,char三种比int小的整数,运算时会先自动转换成int
3.整数运算溢出
整数默认被认为是 int 类型,因此在运算一个很大的整数的时候就会超出 int 类型的取值范围,导致结果错误
300000000*60*60*24*365;//错误,超出 int 取值范围300000000*60*60*24*365L;//错误,在第一个乘式就已经出错了,后面再更正已经无济于事了300000000L*60*60*24*365;//正确
4.浮点数运算不精确
1 - 0.8;//结果为0.19999999999999996
5.浮点数的特殊值
1.0/0;//结果为 Infinity 无穷大0/0.0;//结果为 NaN(not a number)//这两个值不应该出现在正确的代码内