Java基础语法

来源:互联网 发布:相关系数矩阵怎么看 编辑:程序博客网 时间:2024/05/17 23:21

1.1. 基本格式

所有Java代码都应该在一个class

Java是严格区分大小写的。

Java是一种自由格式的语言。Java代码分为结构定义语句和功能执行语句,功能执行语句最后必须以分号结束

1.2. 注释

单行注释和多行注释是在程序用来标记一些特殊的文本,这些文本不参与编译运行。

文档注释是Java中特有的一种注释,它可以通过JDK中的工具(javadoc.exe)解析,生成帮助文档。

文档注释: /** 注释内容 */

1.3. 标识符

Ø 什么是标识符

标识符可以理解为程序中我们自定义的一些名字,包括:包名、类名、函数名、变量名、常量名。

Ø 标识符的命名规则

由大小写字母、数字、下划线(_)和美元符号($)组成,开头不能是数字。不能使用关键字推荐使用全英文。

Ø 标识符通用规范

类名、接口名:

所有单词首字母大写,驼峰式命名,例如:XxxYyyZzz

变量名、函数名:

第一个单词首字母小写,其他单词首字母大写,驼峰式命名,例如:xxxYyyZzz

常量名:

所有字母都大写,单词之间用下划线分割,例如:XXX_YYY_ZZZ

包名:

全部小写,例如:xxx.yyy.zzz

1.4. 关键字

abstract

boolean

break

byte

case

catch

char

class

continue

default

do

double

else

extends

final

finally

float

for

if

implements

import

instanceof

int

interface

long

native

new

package

private

protected

public

return

short

static

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

注:java sizeof ,goto, const 关键字,但不能用goto const作为变量名

1.5. 常量

Ø 整型

整数,4个字节

Ø 长整型

整数,8个字节。以L结尾。

Ø 单精度浮点数

小数,4个字节。以F结尾。

Ø 双精度浮点数

小数,8个字节

Ø 布尔

只有两个值,真(true)或假(false),1个字节。

Ø 字符

单个字符,2个字节。例如:'a''''5''\u0026' , '\u0027'

在字符常量中,斜杠(\是一个特殊的字符,它的作用是用来转义后面一个字符,这些字符通常是不可见的或者有特殊意义的。

'\r回车,回到一行的开始

'\n' 换行,换到下一行

'\t' 制表符,键盘上的Tab

'\b' 类似退格,键盘上的Backspace

以上字符都不可见,无法直接表示,所以用斜杠加上另外一个字符来表示。

'\'' 单引号,Java代码中单引号表示字符的开始和结束,如果直接写程序会认为前两个是一对,报错。

'\"' 双引号,Java代码中双引号表示字符串的开始和结尾,如果要写一个包含双引号的字符串那么这个双引号也需要转义。

'\\' 斜杠,Java代码中的斜杠是转义字符,用来和后面一个字符配合使用,在真正需要用斜杠的时候那么就要用另一个斜杠来转义。

以上字符都有特殊意义,无法直接表示,所以用斜杠加上另外一个字符来表示。

Ø 字符串

由若干个字符组成的一串。可以是一个字符、多个字符、或者一个都没有。字符串没有固定大小。

Ø 空

null,只有这一个值,用来表示一个引用为空。

1.6. 变量

int x = 5;

System.out.println(x);

x = 1 + 1;

System.out.println(x);

x = x + 1;

System.out.println(x);

上面的x就是一个变量,变量没有固定的值,是在内存中开辟的一片空间。

Java中的变量中只能存储同一种类型的值。

变量在被取值之前必须初始化(第一次给变量赋值)

Ø 变量分类

a.基本数据类型: 8

整数:

byte  1个字节,最小值:-128,最大值:127

short 2个字节,最小值:-32768,最大值:32767

int 4个字节,最小值:-2147483648,最大值:2147483647

long 8个字节,最小值:- 9223372036854775808,最大值:9223372036854775807

浮点数:

float 4个字节,最小值:1.4E-45最大值:3.4028235E38

double 8个字节,最小值:4.9E-324,最大值:1.7976931348623157E308

字符:

char 2个字节,最小值:0,最大值:65535

布尔:

boolean 1个字节,truefalse

b.引用数据类型:

类、接口、数组都是引用数据类型,除了8种基本数据类型,其他所有类型都是引用数据类型。

Ø 类型转化

a. 自动类型转换

byteshortchar参与运算的时候会自动提升为int,相当于将一个占空间较小的值放入了一个较大的空间。

b. 强制类型转换

可以将一个占空间较大的值使用(类型)的形式强制放入一个较小的空间,有可能损失精度。

c. 字符串转换

任何值和字符串相加都会得到字符串。

Ø 变量的作用域与生命周期

作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。

生命周期:变量的生命周期从定义时开始,超出作用域后结束。变量生命周期以外不能使用。

1.7. 函数

Ø 函数的定义

函数就是一段有名字的代码,可以完成某一特定功能。

如果有一段代码要使用多次,我们可以给它起个名字,每次使用时通过名字调用,这样就不用每次都写一大段代码了。

如果某个函数在执行的时候需要调用者传入数据,那么可以定义参数列表,用于接收数据。

如果函数运行之后需要返回给调用者数据,那么需要指定返回值类型,并且用关键字return返回。

定义函数的3个必要条件:函数名、参数列表、返回值类型。如果不需要参数也要写小括号,如果没有返回值类型要写void

Ø 名词解释

形参:在定义函数时小括号中的参数,用来接收数据的参数。

实参:在调用函数时真正传入的参数,传递给函数的数据。

参数类型:函数的参数的类型,一旦定义传入时必须匹配。

返回值:函数运行结束后返回的值,使用return关键字返回。

返回值类型:函数运行结束后返回的值的类型,在类型非void情况下必须返回,而且必须类型匹配。

Ø 函数的重载

多个函数的函数名相同,参数列表不同(个数、顺序、类型),这就是函数的重载。在调用函数的时候通过传入的实参找到匹配的函数调用。

函数的重载和返回值类型无关。

1.8. 运算符

Ø 算数运算符

加号:在操作数字、字符、字符串时是不同的,两个字符相加得到的是码表值,两个字符串相加是将字符串连接在一起。

除号:整数在使用除号操作时,得到的结果仍为整数(小数部分忽略)。

取模:模数的符号忽略不计,结果的正负取决于被模数。

自增:符号在前就是先运算后取值,符号在后则是先取值后运算。


比较运算符运行结束之后返回的都是boolean值。

注意运算符==不要写成=

Ø 逻辑运算符

逻辑运算符运行结束之后返回的也是boolean

& 两边都为true结果才为true,只要有一边是false,结果就是false

| 两边都为false结果才为false,只要有一边是true,结果就是true

^ 判断两边是否不同,不同则为true,相同则为false

! 取反,!true结果是false!fasle结果是true

&& 和&结果相同,具有短路效果,如果前半是false,表达式结果一定为false,不运行后一半

|| 和||结果相同,具有短路效果,如果前半是true,表达式结果一定为true,不运行后一半


Ø 位运算符

任何信息在计算机中都是以二进制的形式保存的,&|^除了可以作为逻辑运算符,也可以做为位算符。

它们对两个操作数中的每一个二进制位都进行运算,0当做false1当做true

& 将两个二进制数每一位进行&运算,两边都为1结果才为1,只要有一边是0,结果就为0

| 将两个二进制数每一位进行|运算,两边都为0结果才为0,只要有一边是1,结果就为1

^ 将两个二进制数每一位进行^运算,只要两边不同结果就为1,相同则为0

我们可以对数据按二进制位进行移位操作,java的移位运算符有三种:

<< 左移 将二进制的每一位向左移,低位补0。左移几位就相当于乘以2的几次方。

>> 右移 将二进制的每一位向右移,原来高位是0就补0,原来高位是1就补1。右移几位就相当于除以2的几次方。

>>> 无无符号右移 将二进制的每一位向右移,高位补0。正数移动没区别,负数移动后变为正数。


尽量写简单的表达式,遇到运算符优先级的问题使用括号解决。

1.9. 语句

Ø 顺序结构

顾名思义,就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。

Ø 选择结构

程序具备多个分支,通过条件判断决定程序选择那一条分支执行

a. if语句:

通过if...else if...else决定程序流程。

如果if中的条件满足则执行其中语句,if未满足则继续判断else if,如果满足则执行,不满足继续判断下一个else if,如果所有都不满足,则执行else

练习:

if else语句判断一个数是奇数还是偶数。

用户输入一个字符,用程序判断是否为小写字母,如果是,请输出“您输入的字符是小写字母”。 

b. switch语句:

通过switch...case...default语句控制程序流程。

根据switch后括号中的值判断运行哪一个case,这个值可以是byteshortch;arint

default语句是可选的,如果所有case都不满足,则会执行default

一旦匹配到一个case,程序就会从这个case向下执行,执行完一个case之后不会跳过其他的case,如需跳过请使用break

c. 三元运算符

语法:表达式 结果1 : 结果

如果表达式结尾为true取结果1,为false则取结果2

注意三元运算符也是有短路的效果,根据表达式的结果,只运行冒号一边的,另外一边的不参与运行。

练习:

定义一个函数,接收两个int参数,返回较大的一个。

Ø 循环结构

通过循环语句让同一段代码反复执行多次,执行完毕程序才会继续往后运行

a. while

先判断while中的表达式结果是否为truetrue则执行循环体,执行结束之后再次判断,如果表达式结果为false则跳出循环。

练习:

打印出0-9

打印出a-z

b. do...while

先执行一次循环体,然后判断while中的表达式,如果是true继续执行,如果是false则跳出循环。

练习:

编写一个程序,这个程序不断地读取键盘上输入的字符,直到读到字符’q’时,程序结束。

c. for

for循环的括号中有三条语句,都是可选项。

语句1:这条语句会在整个循环开始之前执行,且仅运行一次,不参与循环。

语句2:必须是一个返回boolean值的表达式,如果写了这个语句那么每次循环开始之前会判断,true则执行循环,false则不执行。没写则直接执行。

语句3:这条语句在每次循环体运行结束之后执行。


1.10. 数组

Ø 什么是数组

数组是一个类型一致,长度不可变的容器。可以通过索引操作容器中的每一个元素。

如果有多个类型相同的数据需要存储,我们就可以将其定义为一个数组,这样做省去了创建多个变量的麻烦。

Ø 如何定义数组

int[] arr = {1,2,3};

定义int数组arr,长度为3,其中3个元素分别为123。这种方式只能在定义数组的时候使用。

int[] arr = new int[]{1,2,3};

定义int数组arr,长度为3,其中3个元素分别为123。可以再任何情况使用。

int[] arr = new int[3];

定义int数组arr,长度为3。其中所有元素都为默认值0

Ø 访问数组元素、遍历数组

存在数组中的数据是有索引的,从0开始递增,我们通过数组名和索引就可以操作其中每一个元素。例如:

System.out.println(arr[0]); // 打印数组中索引为0的元素

arr[1] = 100; // 给数组中索引为1的元素赋值为100

数组的长度

数组可以使用length属性获取其长度。

遍历数组

由于数组可以通过索引获取每一个元素,又可以通过length获取长度,那么我们就可以定义循环来遍历数组中的每一个元素了。

Ø 使用数组时的异常

如果访问数组时索引越界(小于0或者大于length-1),会抛出异常:ArrayIndexOutOfBoundsExcepion

如果访问数组的引用为空(null),会抛出空指针异常:NullPointerException


Ø 与数组操作相关函数

Arrays.toString() 查找帮助文档Arrays类,学习使用此方法将字符串转为字符串形式。

将一个数组转为字符串表示形式

System.arraycopy() 查找帮助文档System类,学习使用此方法拷贝数组中元素。

将一个数组中的某些元素拷贝到另一个数组的指定位置

Ø 多维数组

数组中的每一个元素都是数组,这样的数组就是多维数组。

int[][] arr = { { 1, 2, 3 }, { 4, 5 }, { 6, 7, 8, 9 } };

定义二维数组arr, 其中有三个元素都是数组第一个数组3个元素第二个2个元素第三个4个元素.

int[][] arr = new int[][] { { 1, 2, 3 }, { 4, 5 }, { 6, 7, 8, 9 } };

定义二维数组arr, 其中有三个元素都是数组第一个数组3个元素第二个2个元素第三个4个元素.

int[][] arr = new int[3][3];

定义二维数组arr, 其中有三个元素都是数组每个小数组都是3个元素.

int[][] arr = new int[3][];

定义二维数组arr, 其中有三个元素都是数组每个小数组元素个数不确定.


原创粉丝点击