Java基础语法(一)
Java语言的基础组成
1. 关键字
关键字的概念:被Java赋予了特殊涵义的单词。
特点:体现上都是英文小写。
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。
1、 用于定义数据类型的关键字
基本数据类型(四类八种):
整数类型:byte short int long 浮点类型:float double
字符类型:char 布尔型:boolean
byte:取值范围-2^7 ~ 2^7-1(-128~127)
short:取值范围-2^15 ~ 2^15-1(-32768~32767)
int:取值范围-2^31 ~ 2^31-1
long:取值范围-2^63 ~ 2^63-1
float:单精度, 在内存中占4个字节
double: 双精度 ,在内存中占8个字节
char:取值范围0~65535
boolean: 只有true和false两种
注:整数默认数据类型:int 小数默认数据类型:double
引用数据类型:
class(类) interface(接口)
void用于函数上表示无返回值类型
2、用于定义数据类型值的关键字
true(真) false(假) null(空)
3、 用于定义流程控制的关键字
判断:if else switch case default
循环: while do for
继续循环:continue 结束循环或选择结构:break
返回:return
4、 用于定义访问权限修饰符的关键字
private(私有的) protected(受保护的) public(公有的)
5、 用于定义类、函数,变量修饰符的关键字
abstract(抽象的) final(最终的) static(静态的) synchronized(同步的) enum(枚举)
6、用于定义类与类之间关系的关键字
extends(继承) implements(实现)
7、 用于定义建立实例及引用实例,判断实例的关键字
new(建立实例) this(当前引用) super(父类引用) instanceof(判断对象类型)
8、 用于异常处理的关键字
try(检查异常) catch(捕获异常) finally(最终执行)
throw throws:两个都表示抛出异常,但使用位置不同
9、 用于包的关键字
package(创建包) import(导入包)
10、其他修饰关键字
native(本地)
strictfp(strict float point,精确浮点)
transient(变量修饰符,用它声明一个实例变量,在对象序列化时不会被序列化)
volatile(类型修饰符,用来修饰被不同线程访问和修改的变量)
assert(断言,可以看作是异常处理的一种高级形式,用于捕捉我们在代码中做出的假设)
注:main不是关键字,却是被虚拟机所识别的一个名称。
二、标识符
在程序中自定义的一些名称。
由26个英文字母大小写,数字0-9,符合 _ $组成。
定义合法标识符的规则:
1、 数字不可以开头。
2、 不可以使用关键字。
注:Java中严格区分标识符的大小写。在起名字的时候,为了提高阅读性,要尽量有意义。
Java中的名称规范:
包名:多单词组成时所有字母都小写。
· xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。
· XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
· xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。
· XXX_YYY_ZZZ
3.注释
一个没有注释的程序是不合格的!
注释的作用:1、注解、说明、解释我们的程序,提高代码的阅读性。;
2、调试程序。例如程序出现错误,可以例如注释来查找出错的地方。
有三种注释方式:单行注释、多行注释、文档注释。
单行注释://注释文字
多行注释:/**/ 注:多行注释不要嵌套多行注释。
文档注释:是Java特有的注释,通常书写在类、域、构造函数、方法、定义之前。注释内容可以被JDK中的工具javadoc.exe所解析,生成一套以网页文件形式体现的该程序分说明文档。格式:例
/**
作者:
版本:
作用:
等。
*/
初学者应该养成先写注释再写代码的习惯,因为代码仅仅是思想的一种体现形式而已。将自己的思想通过注释先整理出来,再用代码去体现,不要每行都加注释,也不要每行都不加注释。
4.常量
常量表示不能改变的数值
常量分类:
1.整数常量:所有整数;
2.小数常量:所有小数;
3.字符常量:将一个数字,字母或符号用单引号('')标识;
4.字符串常量:将一些数字,字母或符号用双引号("")标识;
5.布尔型常量:只有TRUE和FALSE;
6.null常量:只有一个数值null。
对于整数,Java有三种表现形式:
-
十进制:0-9,满10进1。
-
八进制:0-7,满8进1,用0开头表示。
-
十六进制:0-9,A-F,满16进1,用0x开头表示。
进制的基本转换:
十进制转换成二进制就是用这个数除以2,如果能整除,在后面标个0,如果不能整除,在后面标识个1,结果取整数。然后把结果再除以2,按照前面的方法标0或1。一直除到结果为1的时候。然后把后面的0和1按照从下往上的顺序读出来,就是这个数的二进制了。我们用6来举例。

二进制转换为十进制:0*2^0+1*2^1+1*2^2=6
无论二进制位上是0还是1,都是按照2的0次幂,2的1次幂……往后算,所以在这里有个简单的记法,
0 0 0 - 0 0 0 0
64 32 16 8 4 2 1
从右向左看,第一个位是2的0次幂,第二个是2的1次幂……,只需要记住1 2 4 8 ……,这样只需要看这个位上是不是1,如果是1的话就加上对应的数。是0就跳过。
然后把对应的数相加就是十进制了。比如 100101 。有1的数下面对应的数分别是1,4,32。所以100101换算成十进制就是1+4+32=37.
简单来说,十进制转换为二进制就是除2取余数,二进制转换为十进制,乘以2的幂数。
十进制与八进制和十六进制的互转,跟转换二进制的方法一样。有简便的算法就是,可以先将十进制转换为二进制,再转换为八进制和十六进制。这就利用了一个八进制位相当于三个二进制位,而一个十六进制位相当于四个二进制位。如:

负数的二进制表现形式:只要将对应的正数取反(1变成0,0变成1)加1就行了。如:-6的二进制

注:负数的最高位都是1
5.变量
概念:内存中的一个存储空间。有自己的名称(变量名)和类型(数据类型)。
作用:用来不断的存放同一类型的数据,并可以重复使用。
定义变量的格式:数据类型 变量名 =初始化值;
数据类型:
Java中有两种数据类型:1、基本数据类型;2、引用数据类型。这里主要讲解基本数据类型。

类型的自动提升:
在运算中,当低类型数据与高类型数据进行计算时,系统会自动将表达式中的低类型数据提升到高类型。如:
byte b = 3 ; int a;
a= b + 1; //b会自动提升为int类型进行运算。
强制类型转换:
当程序中,数据类型需要变换时,可以进行强制转换。如:
byte b = 3;
b = b + 2;//报错
b = (byte)(b+2);//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。
那么我们什么时候定义变量呢?
当数据不确定并且需要对数据存储的时候。就定义一个变量来完成存储动作。
6.运算符
(1)算术运算符

%(取模)
· 当左边的绝对值小于右边:结果是左边。
· 当左边的绝对值等于右边或者是右边倍数的时候:结果是0。
· 当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号。
· 取余的正负号取决于左边,右边忽略不记。
· 用途:任意正整数%2 结果是要么0,要么1。用于切换条件。
++,--(自增,自减)
递增,递减运算符。就是加1或者减1
· 单独存在,放在操作数的前面或者后面,结果一样
· 参与运算时:
·放在操作数的前面,先自身加或者减1,然后再参与运算。
·放在操作数的后面,先参与运算,然后再自身加或者减1。
注: 字符串数据和任何数据使用 +都是相连接,最终都会变成字符串。
(2)转义字符
定义: 通过\来转变后面符号的含义
\n:换行;
\b:退格,相当于backspace键;
\t:制表符,相当于Tab键;
\r:回车;
注:在Linux下,回车符是有“\n”一个字符表示的,在dos中直接识别“\n”,而在windows中,回车键是由“\r\n”两个字符表示的。
(3)赋值运算符
A:=:赋值运算符 把右边的值赋给左边
举例:int x = 3; 把3赋给int类型变量x
int a,b,c;
a = b = c = 5;(是正确的)
B:+=:加赋值运算符 把左边和右边的和赋给左边
举例:int x = 3; x+=2;等同于 x = x + 2;
问个问题 byte b = 5;
b += 2;
System.out.println(b);//会不会报错
不会报错,因为 +=运算符在给b赋值时,自动完成了强转操作。
(4)比较运算符

(5)逻辑运算符

注:一个数和另一个数异或两次,还是本身。例 7^5^5=7
(6)位运算符
左移:<<;空位补0,被移除的高位丢弃,空缺位补0。
右移:>>;被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
无符号右移:>>>;被移位二进制最高位无论是0或者是1,空缺位都用0补。
与: &;二进制位进行&运算,只有1&1时结果是1,否则是0。
或:|;二进制位进行 |运算,只有0 | 0时结果是0,否则是1。
异或: ^;任何相同二进制位进行 ^运算,结果是0;1^1=0 , 0^0=0。
不相同二进制位 ^运算结果是1。1^0=1 , 0^1=1。
反码:~;对二进制进行取反。
(7)三元运算符
格式:
(条件表达式)?表达式1:表达式2;
a)如果条件为true,运算后的结果是表达式1;
b)如果条件为false,运算后的结果是表达式2;
示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数。
最后编写个小程序练习一下
1 /* 2 需求:把两个变量的值进行交换; 3 */ 4 5 class JiaoHuan 6 { 7 public static void main(String[] args) 8 { 9 //1.可以通过定义一个第三方变量来进行交换。在开发中经常用到 10 int a=4,b=7; 11 System.out.println("a="+a+"\tb="+b); 12 int c; 13 c=a; 14 a=b; 15 b=c; 16 System.out.println("a="+a+"\tb="+b); 17 // 2.还可以通过两个数的和来进行交换,但是如果两个数非常大,他们的和超过int的取值范围就会报错。所以有局限性 18 int a1=4,b1=7; 19 System.out.println("a1="+a1+"\tb1="+b1); 20 //把两个数的和赋给a1 21 a1=a1+b1; 22 //用和减去b1的值获得a1的值,并把a1的值赋值个b1 23 b1=a1-b1; 24 a1=a1-b1; 25 System.out.println("a1="+a1+"\tb1="+b1); 26 //3.通过一个数异或同一个数两次还是自身来进行设计。 27 int a2=4,b2=7; 28 System.out.println("a2="+a2+"\tb2="+b2); 29 //a2和b2异或一次,把异或后的值赋值给a2 30 a2=a2^b2; 31 //a2和b2的异或后的值再和b2的值异或一次,得到a2开始的值也就是4,然后把4赋给b2。这样b2就得到a2的值了 32 b2=a2^b2; 33 //同样,b2的值异或a2的值两次也是它自身。现在的a2里面的值是他们异或一次的值,只需要用这个值再和a2原本的值异或一次就行了。 34 //现在这个值在b2中,所以用a2异或b2,最后得到b2原本的值,再把它赋给a2.这样就完成了交换 35 a2=a2^b2; 36 System.out.println("a2="+a2+"\tb2="+b2); 37 } 38 }
运行结果

浙公网安备 33010602011771号