Java基础_03 | Java SE基础语法(命名规约,变量定义机制,基本数据类型,常量,运算符,流程控制)

1.命名规则

在Java语法中,命名规则有三点:

  • 不允许和关键字重复
  • 符号只允许下划线_美元符$
  • 不允许以数字开头

Java中的保留字如下:

其中需要注意的有:

  • trueflasenull这三个关键字都是小写,而在C/C++中是大写;
  • 没有sizeof运算符;
  • gotoconst在java中虽然保留,但没有意义;

除了Java中规定的语法之外,根据《阿里巴巴Java开发手册》,有以下规约

  1. 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束;
  2. 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式;
  3. 类名使用 UpperCamelCase 风格,必须遵从驼峰形式;
  4. 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从
    驼峰形式。
  5. 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。

2.基本数据类型

  • 整型
    • Java中所有的整型都是有符号整型,不存在无符号整型;
    • byte是8位,short是16位,int是32位,long是64位;
  • 浮点型
    • float为32位(单精度), double为64位(双精度);
  • 字符型
    • Java中的char是两个字节的16位无符号型数据,注意和C/C++区别;
    • Java对应使用unicode编码字符集(双字节编码);
  • 逻辑类型
    • Java中的boolean占用一个字节8位;
    • Java中的逻辑变量是truefalse

Java所有数据类型的长度和表示是固定的,与平台无关,不是像在C/C++语言中那样数据类型的长度根据不同的平台而变化。

3.常量(重点)

Java中定义变量的语法和C语言相同,但定义的机制和C语言有所差别,比如同样定义一个变量a并赋初值:

int a = 123;
  • 在C语言中,123这个数(常量)被直接赋给我们定义的整型变量a;
  • 在Java语言中,123这个数先根据默认数据类型(int)保存,然后再赋给我们定义的整型变量a;

由于Java中这个机制,把握住一个常量的数据类型就非常重要,接下来慢慢体会。

3.1.整型常量

整型常量默认是int类型,如果数字过大,需要在末尾加L表示long类型。

比如:

long i = 123456789123456789;

编译后报错:

这个例子很好的说明了这个机制:

既然变量i已经定义为long类型,为什么还会报错提示整数太大呢?

因为Java的变量定义机制,123456789123456789这个常量默认保存为int类型,但是int类型只有4个字节,显然会发生整数太大的错误,在常量末尾后面加上L即可,表明这是个long类型数据:

long i = 123456789123456789L;

3.2.浮点型常量

浮点型常量默认是double类型,如果将double类型常量赋给float类型变量,编译会出错,所以需要在末尾加fF表示float类型。

比如:

float i = 3.3;

编译后报错:

这个例子再次说明了这个机制:

程序中定义的是float变量i,哪里来的double呢?

因为Java的变量定义机制,3.3默认保存为double类型常量,而我们定义的变量i是float类型,所以赋值时会报错,在常量后加一个F表示float类型数据即可

float i = 3.3F;

3.3.字符型常量

字符常量默认就是char类型,与变量是对应的,都是两个字节。

字符型常量直接使用单引号'表示即可,比如:'a''您'

在所有的这些字符型常量中,有一部分字符拥有特殊功能,称为转义字符

  • '\\':反斜线
  • '\r':回车
  • '\n':换行
  • '\'':单引号
  • '\t':制表符

在Java中还有一个特殊的转义字符:

\u<十六进制unicode码值>

这个转义字符也表示对应unicode码值的那个字符,比如下面这两行代码作用相同:

char ch = '您';
char ch = '\u60a8';

3.4.布尔型常量

布尔型常量默认就是boolean类型,与变量是对应的,都是一个字节,并且只有两个值:true和false。

4.数据类型转化

Java数据类型根据所占位数从小到大依次排列如下:

byte -> short -> int -> long -> float -> double 

类型间转化有两种:

  • 低级向高级的自动类型转化
  • 高级向低级的强制类型转化

4.1.自动类型转化

低级数据类型可以自动转化为高级数据类型

比如:

byte i = 10;
int j = 200;

j = i;	//正确,byte型自动转化为int型
i = j;	//错误,int型不可以自动转化为byte型

另外,由于之前介绍的Java变量定义机制,数据混合运算时会进行自动类型转化,最后为其中最高级的数据类型:

比如:

float i = 10*0.2;	//错误,10*0.2结果为double类型,不可以转化为float类型
float i = 10*0.2f;	//正确,10*0.2结果用f表明为float类型

4.2.强制类型转化

高级数据类型可以强制转化为低级数据类型,必须指明数据类型,要注意精度丢失问题

比如:

byte i = 10;
int j = 200;

j = i;			//正确,byte型自动转化为int型
i = (byte)j;	//正确,int型强制转化为byte型

5.运算符

  • 算术运算符
    • +-*/(整数和浮点数运算结果还是浮点数)、%两个操作数都可以是浮点数
  • 关系运算符
    • >>=<<===!=
  • 逻辑运算符
    • !&&(左边为,右边不执行)、||(左边为,右边不执行)
  • 赋值运算符
    • =+=-=*=/=%=
  • 位运算符
    • &|~^

6.流程控制

6.1.顺序

6.2.分支

条件分支if_else

格式如下:

if(<条件表达式>)
{
	//语句块1
}
else
{
	//语句块2
}

程序执行流程如图:

if判断条件中必须是条件表达式,即最后要是布尔变量值true或false,而在C语言中,if的判断条件只有零和非零,这一点Java和C/C++不一样,要特别注意。

比如:

if(3)
{
	//语句块
}
  • 在C/C++中是正确的,3是非零值,并且语句块会执行;
  • 在Java中直接编译报错,3不是布尔值;

多重分支switch

格式:

switch(<表达式>)
{
	case <1>: 
		//语句块1
		break;
	case <2>: 
		//语句块2
		break;
	case <值n>: 
		//语句块n
		break;	
	default:
		//语句块n+1
}

程序执行流程如图:

switch语句中的表达式的数据类型可以是byte、char、short、int类型。

6.3.循环

  • while循环(先判断条件,如果满足则执行循环语句块)
while(条件表达式)
{
	//循环语句块
}
  • for循环
for(循环变量赋值语句;循环判断条件;循环变量变化语句)
{
	//循环语句块
}

注意首先执行循环变量赋值语句,然后执行循环判断条件,如果不满足则结束循环,满足则执行循环语句块,执行完毕后执行循环变量变化语句,然后转入执行循环判断条件

  • do…while循环(先执行循环语句块,然后判断)
do
{

	//循环语句块
	
}while(条件表达式);
  • 跳转语句:continuebreak

接收更多精彩文章及资源推送,欢迎订阅我的微信公众号:『mculover666』

发布了208 篇原创文章 · 获赞 559 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/Mculover666/article/details/89136710