二、java基本语法

一、标识符

java对各种变量、方法和类等要素命名时使用的字符序列成为标识符;通俗点,凡是自己可以起名字的地方都叫标识符,都遵守标识符的规则

1.标识符命名规则:

1)标识符由字符、下划线、美元符或数字组成。

2)标识符应以字符、下划线、美元符开头

3)java标识符大小写敏感,长度无限制

4)约定俗成,java标识符选取应该注意“见名知意”且不能与java语言的关键字(eclipes中带颜色的基本都是关键字)重名

合法的标识符

不合法的标识符

HelloWord class
DataClass DataClass#
_983 98.3
$6s5_c7 Hello World

 

二、关键字

java中一些赋以特定含义,用作专门用途的关键的字符串成为关键字(keyword);且大多数编辑器都会将关键字用特殊方式标出

所有java关键字都是小写英文

一些常用关键字

abstract default if private this
boolean do implements protected throw
break double import public throws
byte else instanceof return transient
case extends int short try
catch final interface static void
char finally long stricrfp volatile
class float native super while
const for new switch null
continue goto package stnchronized  

三、java的基本数据类型

1.java常量

java的常量值用字符串表示,区分为不同的数据类型。如:

整型常量:1234

实型常量:3.14

字符常量:’a’

逻辑常量:true、false

字符串常量:”HelloWorld”

注意:

1)区分字符常量和字符串常量

字符常量是单引号引起来的单个,字符串常量是双引号引起来的不限长度

由于java采用Unicode编码,每个字符占两个字节,因而可用天十六进制编码形式表示,当然也可以用一个中文表示(单个中文占用两个字节)

2)”常量”这个名次还会用在另外其他语境中表示值不可变的变量

2.java变量

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

java程序中每一个变量都属于特定的数据类型,在使用前必需对其进行声明,声明格式为:

type varName [=value]

例如:

int i =100;

foloat f=12.3f;

double d1,d2,d3=0.123;(声明了三个变量,其中d1,d2是默认值,d3=0.123)

String s=”hello”

从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必需先声明,然后必需进行赋值,才能使用。

1)java变量分类

按被声明的位置划分:

局部变量:方法或语句块内部定义的变量,只能在被定义的方法或语句块内使用

成员变量:方法外部、类的内部定义的变量,可以在整个类中使用,包括类里的方法或语句块内也可以使用

注意:类外面是不能有变量的声明的

image

按所属的数据类型划分:

基本数据类型变量

引用数据类型变量

image

 

四、运算符

java语言支持如下运算符:

算术运算符:+        -        *        /        %        ++        --

关系运算符:>        <        >=        <=        ==        !=  

逻辑运算符:!        &        |        ^        &&        ||

位运算符:&        |        ^        ~        >>        <<        >>>

赋值运算符:=

拓展赋值运算符:+        =        -=        *=        /=

字符串链接运算符:+

三目条件运算符          ?        :

1.算数运算符

注意:

1)

位运算符中的!、&、|、^跟罗技运算符相同,只是位运算符是对变量的二进制进行操作,我个人是用不到的,所以不在这里多做介绍

2)

++(—)

在前时先运算再取值

在后时先取值再运算

image

2.逻辑运算符

image

例如:

image

3.扩展赋值运算符

image

4.字符串连接符

“ + ”运算符两侧的操作数中只要有一个是字符串类型,系统会自动将另一个操作数转换为字符串然后进行连接,例如:

4 + 5 = 9

4 + “ab” = “4ab”

5.三目条件运算符

语法格式:

x ? y : z

其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。

五、表达式和语句

1.表达式

表达式是符合一定语法规则的运算符和操作数的序列,例如:

a

5.0 + a

(a – b) * c – 4

i < 30 && i %10 !=0

1)表达式的类型和值

表达式中的操作数进行运算得到的结果称为表达式的值

表达式值的数据类型即为表达式的类型

2)表达式的运算顺序

应按照运算符的优先级从高到低的顺序进行

优先级相同的运算符按照实现约定的结合方式进行

我个人觉得运算顺序这块是可以忽略的,首先我的逻辑思维能力不是特别强,另外我的记性也不是特别好,所以如果我需要在表达式中区分优先级的话我会选择加括号。但是我觉得对于一些比较复杂且关键的逻辑运算,如果个人逻辑运算能力加记忆都比较好可以保证不出错的话,善用罗技运算符优先级未尝不是一种不让别人看懂你代码copy的手段。算是一种小小的防护吧,反正我这种人是不会去尝试分析这种代码的,太累~~

image

2.分支(条件)语句

if

if  … else

if  … else if … else if

if  … else if … else  if …else

image

switch () {

case xx:

        ……………

case xx:

        ……………

default:

        ……………

}

1.java中switch语句只能探测int类型的值(char类型的值也可以,因为他可以转换城int类型)

2.小心case穿透,所以最好与break连用

3.多个case可以连用,如下的示例代码也可以这样写(当i=1,2,18都会输出18):

image

示例:

image

 

3.循环语句

for(…;…;…){……}

while(…){……}先判断再执行大括号里面的内容,然后再判断是否要继续执行

do{……} whille(…); 先执行大括号里面的内容再判断是否要继续执行

image

image

4.break & continue语句

break语句用于终止某个语句块的执行。用在循环体语句中么可以强行退出循环

continue语句用在循环体语句中,用于终止某次循环过程,跳过循环中continue语句下面未执行的循环,开始下一次循环过程

image

八、方法

java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式:

[修饰符1  修饰符2  …] 返回值类型  方法名  (形式参数列表)  {

    java语句

形式参数:在方法被调用时用于接受外界输入的数据

实参:调用方法时实际纯给方法的数据

返回值:方法在执行完毕后返回给调用他的环境的数据

返回值类型:实现约定的返回值的数据类型,如无返回值,必需给出返回值类型void

 

java语言中调用方法:对象名.方法名(实参列表)

实参的数目、数据类型和次序必需和所调用方法声明的形参列表匹配

return语句终止方法的运行并指定要返回的数据

 

java中进行函数调用传递参数时,遵循值传递的原则:

基本类型传递的是该数据值本身,引用累心美国传递的是对对象的引用,而不是对象本身

image 

例子中的方法1,前面定义的数据类型为void, 所以方法中不能有return返回值,方法4中因为有return返回值,所以前面必需定义为返回值的类型,也就是m4前面那个int

九、递归调用

递归调用是指在方法执行过程中出现该方法本身的调用

先看一个例子,这是一个简单的递归调用:

image

 

简单分析下:

1.首先main主方法中输出字符串,内容是test方法当参数等于5的时候的返回值

2.然后将参数5传入test方法,返回值是:5 * test(4)

3.再次将参数4传入test方法中,返回值是:4 * test(3)

4.再将参数3传入test方法中,返回值是:3 * test(2)

5.再讲参数2传入test方法中:返回值是:2 * test(1)

6.再将参数1传入到方法中:返回值是:1

然后程序开始往回走,返回值传入test(1)中得到2*1

再往回走,将刚刚得到的2*1传入到test(2)中得到3*2*1

还要往回走,将刚刚得到的3*2*1传入到test(3)中得到4*3*2*1

还要往回走,将刚刚得到的4*3*2*1传入到test(4)中也就是test(5)的返回值,得到5*4*3*2*1

最后将test5的返回值传入到我们的主方法输出于语句中5*4*3*2*1=120,那么我们的输出语句输出的应该为120

这就是简单的递归调用的例子了

再来看一个例子:

image

非递归的写法:

请自行领悟

image

posted @ 2016-05-28 21:43  许忠慧  阅读(18772)  评论(0编辑  收藏  举报