Java学习-基础语法

  • 格式:pdf
  • 大小:197.98 KB
  • 文档页数:6

Java学习-基础语法

1.注释平时编写代码时,在代码量⽐较少时,我们还可以看懂⾃⼰写的,但是当项⽬结构⼀旦复杂起来,我们就需要注释才能看懂注释并不会被执⾏,是给我们写代码的⼈看的

书写注释是⼀个⾮常好的习惯

注释有三种:* 单⾏注释 //开头* 多⾏注释 /* */* ⽂档注释 /** */2.标识符和关键字

标识符:Java所以的组成部分都需要名字。类名,变量名以及⽅法名,类型名数组名,⽂件名都被称为标识符

所有的标识符都应该以字母(a-z,A-Z),美元符$,或者下划线_开始⾸字母之后可以是字母,美元符,下划线,或者数字的任何字符组合不能使⽤关键字作为变量名或者⽅法名,不能是true,false和null尽管它们不是关键字标识符是⼤⼩写敏感的可以使⽤中⽂命名,但是⼀般不建议这样使⽤,也不建议使⽤拼⾳

关键字:具有特定⽤途或被赋予特定意义的⼀些单词

关键字都是⼩写的

3.数据类型

强类型语⾔ Java要求变量的使⽤要严格符合规定,所有的变量都必须先定义再才能使⽤

弱类型语⾔字节,位,字符

位(bit): 是计算机 内部数据 储存的最⼩单位,是⼀个⼋位⼆进制数

字节(byte):是计算机中 数据处理 的基本单位,习惯上⽤⼤写B来表⽰1B=8bit字符:是指计算机中使⽤的字母,数字,字和符号

⼆进制0b ⼋进制0 ⼗进制 ⼗六进制0x浮点数有精度 最好完全避免浮点数进⾏⽐较字符本质还是数字转义字符 制表符\t 换⾏\n4.类型转换

由于Java是强类型语⾔,所有要进⾏有些运算时,需要⽤到类型转换

低------------------------------------>⾼byte,short,char->int->long->float->double运算时,不同类型的数据先转换为同⼀类型,然后进⾏运算

强制类型转换 ⾼->低 (类型)变量名⾃动类型转换 低->⾼注意:不能对布尔值进⾏转换不能把对象类型转换为不相⼲的类型转换时可能出现内存溢出,精度问题5.变量和常量变量变量就是可以变化的量Java是⼀种强类型语⾔,每个变量都必须声明类型

Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作⽤域

type varName [=value] [{,varName[=value]}]数据类型 变量名 =值 可以⽤逗号隔开来声明多个同类型变量注意事项:变量都有类型,可以是基本类型,也可以是引⽤类型;变量名必须是合法的标识符变量声明是⼀条完整的语句,因此每⼀个声明都必须⽤;结束

变量作⽤域

在Java中,变量的作⽤域分为四个级别:类级、对象实例级、⽅法级、块级

类级变量⼜称全局级变量或静态变量,需要使⽤static关键字修饰,你可以与 C/C++ 中的 static 变量对⽐学习。类级变量在类定义后就已经存在,占⽤内存空间,可以通过类名来访问,不需要实例化

对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问

⽅法级变量就是在⽅法内部定义的变量,就是局部变量

块级变量就是定义在⼀个块内部的变量,变量的⽣存周期就是这个块,出了这个块就消失了,⽐如 if、for 语句的块。块是指由⼤括号包围的代码常量

常量(Constant):初始化后不能再改变的值

所谓常量可以理解成⼀种特殊的变量,它的值被设定后,在程序运⾏过程中不允许被改变final 常量名=值final double PI=3.1415926常量名⼀般使⽤⼤写变量的命名规则所有的变量,⽅法,类名都要见名知意类成员变量,局部变量:⾸字母⼩写和驼峰原则(monthSalary)常量:⼤写字母和下划线(MAX_VALUE)类名:⾸字母⼤写和驼峰原则(GoodMan)⽅法名:⾸字母⼩写和驼峰原则{ run(),runRun() }

6.运算符

++i(--i) 表⽰在使⽤i之前,先使i的值增(减)1

i++(i--)表⽰在使⽤i之后,使i的值增(减)1

int m=2; int x=(2*m++)+m;//x=7

int m=2; int y=(2*++m)+m;//y=9

&:与 and

|:或 or

!:⾮ 取反

短路运算:a&&b a,b为真则为true,a若为假则不判断b

a||b a,b有⼀个为真则为true,若a为真则不判断b

'a<>b'将⼆进制形式的a逐位左移b位,最低位空出的b位补07.包

为了更好地组织类,Java提供了包机制,⽤于区别类名的命名空间

格式为package pkg1[.pkg2[.pkg3……]]⼀般⽤域名倒置作为包名

为了能够使⽤某⼀个包的成员,我们需要在Java程序中明确导⼊该包,使⽤import语句完成import package1[.package2……].(classname|*);8.JavaDoc⽣成⽂档

在IDEA中点击 Tools > Generate javadoc

9.Scanner对象

之前我们学的基本语法中我们并没有实现程序和⼈的交互,但是Java给我们提供了这样⼀个⼯具类,我们可以获取⽤户的输⼊。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取⽤户的输⼊。

基本语法Scanner s=new Scanner(System.in);调⽤Scanner对象的⽅法获得输出,如next(),nextByte(),nextShort(),nextInt(),nextDouble()等。上述⽅法执⾏时都会堵塞,程序等待⽤户在命令⾏输⼊数据回车确认

通过Scanner类的next()与nextLine()⽅法获取输⼊的字符串,在读取前我们⼀般需要使⽤hasNext()与hasNextLine()判断是否还有输⼊的数据

凡是IO流的类如果不关闭就会⼀直占⽤资源,⽤完就关next():⼀定要读取到有效字符才可以结束输⼊,有效字符前的空格 会被⾃动去掉,后的空格作为结束符,所有不能得到带有空 格的字符串nextLine(): 以回车为结束符,返回的是回车之前所有的字符

10顺序、判断、循环顺序结构Java的基本结构就是顺序结构,除⾮特别指明,否则按照顺序⼀句⼀句执⾏顺序结构是最简单的算法结构它是任何⼀个算法都离不开的⼀种基本算法结构**If语句 **IfDome、IfDome1

if(布尔表达式){ //布尔表达式为true执⾏语句}if(布尔表达式){ //布尔表达式为true执⾏语句}else{ //布尔表达式为false执⾏语句}if(布尔表达式1){ //布尔表达式1为true执⾏语句}else if(布尔表达式2){ //布尔表达式2为true执⾏语句}……else{ //以上布尔表达式都不为true执⾏语句}switch语句 SwitchDemo

switch(expression){ case value1: //变量值为value1时执⾏的语句 break; case value2: //变量值为value1时执⾏的语句 break; case value3: //变量值为value1时执⾏的语句 break; …… default: //都不是时执⾏的语句 break;}循环 WhileDemowhile 循环:

while(布尔表达式){ //循环内容}只有布尔表达式为true,循环会⼀直执⾏下去我们⼤多数情况是会让循环停⽌下来,需要⼀个让表达式为false的⽅式结束循环⼩部分情况需要循环⼀直执⾏下去,⽐如服务器的请求响应监听等循环条件⼀直为true会造⽆限循环(死循环),正常编程中应该尽量避免死循环,死循环会影响程序性能或者造成程序卡死崩溃do...while循环:

do { //执⾏语句}while(布尔表达式);与while循环的区别是,do...while循环⾄少会执⾏⼀次while循环先判断再执⾏,do...while循环先执⾏后判断

for循环 ForDemo1、ForDemo2、ForDemo3

for循环语句是⽀持迭代的⼀种通⽤结构,是最有效、灵活的循环结构for循环执⾏的次数在执⾏前就已经确定的

for(初始化;布尔表达式;迭代){ //执⾏语句}break和continue语句

break语句:如果在某次循环中执⾏了break语句,那么整个循环语句就结束了continue语句:如果在某次循环中执⾏了continue语句,那么本次循环就结束了,不再执⾏循环体中continue语句后⾯的语句,⽽转让进⾏下⼀次循环

11.⽅法

Java⽅法是语句的集合,它们在⼀起执⾏⼀个功能⽅法是解决⼀类问题的步骤的有序组合⽅法包含与类或对象中⽅法在程序中被创建,在其他地⽅被引⽤⽅法本意是功能块,就是实现某个功能的语句块集合。我们在设计⽅法的时候,最好⼀个⽅法只完成⼀个功能,有利于后期扩张

类名.对象.⽅法名()⽅法包括⼀个⽅法头和⼀个⽅法体修饰符:告诉编译器如何调⽤该⽅法,定义了该⽅法的访问类型,可选

返回值类型:⽅法可能有返回值,returnValueType是⽅法返回值的数据类型,有些没有返回值,returnValueType关键字是void⽅法名:⽅法的实际名称。⽅法名和参数表共同构成⽅法签名

参数类型:参数像⼀个占位符。当⽅法被调⽤时,传递值给参数,这个值被称为实参或变量。参数列表是指⽅法的参数类型、顺序和参数个数。参数是可选的,⽅法可以不包含任何参数形式参数:在⽅法被调⽤时⽤于接收外界输⼊的数据实参:调⽤⽅法时实际传给⽅法的数据

⽅法体:⽅法体包含具体的语句,定义该⽅法的功能Java的唯⼀参数传递⽅式:值传递对于基本数据类型的参数,向该参数传值,传递的是值的拷贝⽽对于引⽤类型的参数,传递的是实参的引⽤(地址),⽽不是变量所引⽤的实体。对象,数组,接⼝作为参数属于引⽤类型参数修饰符 返回值类型 ⽅法名(参数类型 参数名){ …… ⽅法体 return 返回值;}调⽤⽅法:对象名.⽅法名(实参列表)

当⽅法返回⼀个值的时候,⽅法调⽤通常被当作⼀个值int larger=max(30,40);当返回值是void,⽅法调⽤⼀定是⼀条语句System.out.println("Hello World!");⽅法的重载:就是在⼀个类中,有相同的函数名称,但形参不同的函数规则:⽅法名称必须相同参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)

返回值可以相同也可以不同,仅返回类型不同不⾜以成为⽅法的重载

递归:⽅法⾃⼰调⽤⾃⼰

利⽤递归可以⽤简单的程序来解决⼀些复杂的问题,它通常把⼀个⼤型复杂的问题层层转化为⼀个与原问题相似的规模较⼩的问题来求解,只需要少量的程序就可以描述出解题过程所需要的多次重复计算,⼤⼤地减少了程序的代码量。递归的能⼒在于⽤有限的语句来定义对象的⽆线集合

递归包括两个部分:什么时候不调⽤⾃⾝⽅法,什么时候调⽤⾃⾝⽅法

12.数组数组的定义:数组是相同类型数据的有序集合数组描述的是相同类型的若⼲个数据,按照⼀定的先后次序排列组合⽽成

每⼀个数据称作⼀个数组元素,每个数组元素可以通过⼀个下标来访问它们。下标从0开始数组的声明创建必须声明数组变量,才能在程序中使⽤,仅仅创建⼀个引⽤数组的存储地址

语法:dataType[] arrayRefVar; //⾸选或 dataType arrayRefVar[]; //C语⾔风格,不推荐使⽤new操作符来创建数组:dataType[] arrayRefVar=new dataType[arraySize];完成了两件事: