java e f_JAVA 基础

一、Java编程风格与命名规范

1.     格式规范

a)      缩进嵌套的代码

b)      断开很长的句子

c)      使用空白

d)      不要直接使用Tab控制符

2.     命名规范

a)      JAVA源文件的命名

JAVA源文件名必须和源文件中所定义的类的类名相同。且不能为关键字

b)     Package的命名

Package名的第一部分应是小写ASCII字符,并且是顶级域名之一,通常是com、edu、gov、mil、net、org或由ISO标准3166、1981定义的国家唯一标志码。Package名的后续部分由各组织内部命名规则决定,内部命名规则指定了各组件的目录名,所属部门名、项目名等。

c)      Class/Interface的命名

Class名应是首字母大写的名词,    而且大写中间单词的首字母。命名时应该使其简洁而又具有描述性。异常类的命名,应以Exception结尾。Interface的命名规则与Class相同。

d)     常量的命名

常量名的字母应全部大写,不同单词之间通过下划线连接,并且名字组合应该赋予含义。

e)      变量的命名

普通变量

普通变量名的首字母小写,其它每个单词的首字母大写。命名时应该使其简短而又有特定含义,简洁明了的向使用者展示其使用意图。

约定变量

所谓约定变量,是指那些使用后即可抛弃(throwaway)的临时变量。通常i、j、k、m和n代表整型变量;c、d和e代表字符型变量。

f)       方法的命名

方法名的第一个单词应是动词,并且首字母小写,其它每个单词首字母大写。

g)     方法参数的命名

选择有意义的名称作为方法的参数名。可能的话,选择和需要赋值的字段一样的名字。

详见Java编程风格与命名规范-ZZ

二、       语法基本元素

1.     关键字

a)      定义:被JAVA语言赋予了特殊含义的单词。

b)      特点:关键字中所有字母都为小写。

c)      注意:goto和const作为保留字存在,目前并不使用。

2.

标识符

a)

含义:标识符就是给类,接口,方法,变量等起名字时使用的连续字符序列。

b)组成规则:① 英文大小写字母A~Z和a~z ② 数字字符0~9 ③ $和 _

c)注意事项:① 不能以数字开头 ② 不能是Java中的关键字 ③ 区分大小写

④ 不能有空格

3.

数据类型、常量和变量

a)      基本数据类型

byte、short、int、long、float、double、char、boolean

b)      引用数据类型

数组、类、接口。

分类

不同类型

关键字

字节数

取值范围

默认值

整数型

字节型

byte

1个字节

-27~27-1(-128~127)

0

短整型

short

2个字节

-215~215-1(-32768~32767)

0

整型

Int(默认)

4个字节

-231~231-1

0

长整型

long

8个字节

-263~263-1

0

文本型

字符型

char

2个字节

0~216-1(从0~65536)

‘\u0000’

浮点型

单精度浮点型

float

4个字节

大约±3.40282347E+38F

(有效位数为6~7位)

0.0f

双精度浮点型

Double

(默认)

8个字节

大约±1.79769313486231570E+308

(有效位数为15位)

0.0d

逻辑型

布尔型

boolean

1个字节

True/false

false

级别从低到高为:(byte-->short),char (这两个平级)--> int-->

float--> long--> double

补充:不同的字符所占的字节是不同的。详见输入输出章节之字符编码。

0x  0

c)      数据类型转换

不同的基本数据类型之间进行运算时需要进行类型转换,除boolean类型外所有的基本数据类型都需要考虑类型转换,其主要应用在算术运算和赋值运算时。

自动类型转换:除boolean型外,其他数据类型系统自动从低级别到高级别转换;

强制类型转换:把一个高级别的数赋给一个低级别的的变量。

Ø溢出处理:待补充

补充:同种类型之间才可以进行强制装换。错误举例:String a = (String)2;

正确举例:String a = integer.toString(2)或int i =

integer.parseInt(s);

d)      变量

所有局部变量在使用前都得初始化。详见类与对象部分。

e)

常量

在程序执行的过程中其值不可以发生改变的量,Java中常量可分为字面值常量和自定义常量。 eg. final double PI =

3.14;

字符串常量     用双引号括起来的内容

整数常量       所有整数   12,23,默认为int,长整型加字母‘L ’

小数常量       所有小数

12.34,56.7,默认为都double,float加字母‘F’

Ø字符常量       用单引号括起来的内容‘a’,‘A’,‘0’和转义字符常量”\n”

布尔常量       较为特殊,只有true和false

空常量

null (数组部分讲解)

符号常量       用一个标识符来表示的常量,修饰符final,eg.#definePI3.14

f)

引用方法

含义

\b

退格

\t

水平制表符Tab

\n

换行

\f

表格符

\r

回车

\'

单引号

\"

双引号

\\

反斜线

表:常用转义字符

整型常量的三种进制表示形式

十进制整数,如12, -314, 0。

八进制整数,要求以0开头,如012

十六进制数,要求0x或0X开头,如0x12

十进制数形式,必须含有小数点,例如:

f)       浮点类型常量两种表示形式

3.14       314.0 时     .314

科学记数法形式,如

3.14e2      3.14E2      314E2

g)      转义字符的用法

System.out.println(“Hello\nWorld”);

System.out.println(“Hello”+”\n”+”World”);

4.

运算符和表达式

表达式是由运算符与操作数组合而成的,运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。

优先级

运算符

含义描述

1

() ,.,[]

强制运算、方法调用

2

++ ,--, + ,~(位取反), !(逻辑取反)

一元运算、字符串相加

4

* , / , %

算术运算 乘除、取余

5

+ , -

算术运算 加减(正负)

7

,<= ,>= ,

比较运算、类运算

8

= = , ! = ,.equals()

比较运算

9

&

逻辑(位)运算 与

10

^

位运算 异或

11

|

逻辑(位)运算 或

12

&&

逻辑 与(短路)

13

||

逻辑 或(短路)

14

?:   eg. (关系表达式)?表达式1:表达式2;

三元 条件运算

a)      算术运算符

(* , / ,

% , + , -)

%:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。

+:加法运算符,连接符。举例:123+321+hello=444hello;hello+123+321=hello123321;hello+(123+321)=hello444;

++,--:自增自减运算。举例:int a=5;print(4++);//5 print(++4);//7

* , /:注意小数类型计算问题。1/2*2=0,1/2*2.0=0,1/2.0*2=1.0。整型与整型运算得整型,整形与浮点型运算得浮点型,结果取取决于第一次遇到浮点型的位置。

b)      赋值运算符

(= , *= ,

/= , %= , += , -=)

c)      比较运算符

(,<=

,>= ,= = ,

! =)boolean

bo=(i==j);

特点:该运算符的特点是:运算完的结果,要么是true,要么是false。

待补充:==与.equals()区别:

d)      逻辑运算符

(&, | ,

^ , ! ,&&, ||)

逻辑运算符除了 !  外都是用于连接两个boolean类型表达式。

&:只有两边都为true结果是true。否则就是false。

|:只要两边都为false结果是false,否则就是true。

^:异或:和或有点不一样。

u

两边结果一样,就为false;

u

两边结果不一样,就为true。

& 和 &&区别:

u

&:无论左边结果是什么,右边都参与运算(建议短路与);

u

&&: 短路与,如果左边为false,那么右边不参数与运算。

| 和|| 区别:

u

|:两边都运算(建议短路或);

u

||:短路或,如果左边为true,那么右边不参与运算。

三、

流程控制

在Java中,流程控制分为三种基本结构:顺序结构、分支结构和循环结构。

If判断:

else If判断:

If判断(嵌套):

switch判断:

if (表达式) {

//语句1;

}else{

//语句2;

}

类比:

(关系表达式)?

表达式1:表达式2;

注:else语句可用

Continue代替;

if (表达式1) {

//语句1;

}

else if (表达式2) {

//语句2;

}

else {

//语句3;

}

If (表达式1) {

if(表达式2) {

//语句1;

} else {

//语句2;

}

} else {

//语句3;

}

switch (表达式) {

case 常量1:

语句1;

break;

case 常量2:

语句2;

break;

default:

语句3;

}

while循环:

do-while循环:

for循环:

while(表达式) {

//循环体;

}

do{

//循环体;

} while(表达式);

for(初始化;条件;迭代) {

//循环体;

}

1.

循环语句

a)

循环是相同动作的集合.

b)

循环次数确定的情况,通常选用for循环;

循环次数不确定的情况,通常选用while或do-while循环。

c)

初始情况不满足循环条件时,while循环一次都不会执行;

do-while循环不管任何情况都至少执行一次。

d)

for 循环,若变量在判断条件内初始化,则作用域为循环体(大括号)内。

e)

嵌套循环判断条件:内层循环一圈,外层循环一次。

2.

判断语句

a)

多重if与switch选择结构比较

相同点:都是用来处理多分支条件的结构

不同点:switch选择结构只能处理等值条件判断的情况;多重if选择结构没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况。

b)

else If 顺序进行判断,当前面条件不满足时才进行下一步,条件满足,跳过剩余结构,结束判断语句。

c)

switch 后面的小括号中的变量应该是int、short、byte、char、枚举类型、String。

d)

switch 可进行语句合并,以进行连续区间判断。(省去语句和break)

3.

跳转语句

a)

break:结束判断语句,执行完判断体后的语句后,终止离自己最近的外层循环。

do {

Stringtitle = input.next();

if (title.equals("exit")) {

break;

}

} while (true);// 跳出死循环

b)continue:结束判断语句,终止本次循环,不执行判断体后面语句,进入下一次循环。

publicstaticvoidmain(String[] args) {

inti = 0;

do {

i++;

if (i == 3) {

// break; // 输出12

continue; // 输出1245

}

System.out.println(i);

}

while (i<5);

}

c)

return:结束当前方法的执行并退出,并返回值到调用该方法的语句处。

for (inti = 0; i<10; i++) {

if (i % 2 != 0)

return;

System.out.print(i);

} // 运行结果:0

4.

flag 或index标记的用法

循环内判断用flag标记返回判断结果。

返回函数返回值时,用flag传递返回值。

需要交互输入的函数最好放在测试类的main中,否者传递返回值会很麻烦。

四、

数组

数组是一个变量,存储相同数据类型的一组数据

步骤

举例

解释

声明

int[ ] a;

告诉计算机数据类型是什么

分配空间

a = new

int[5];

告诉计算机分配几个连续的空间

赋值

a[0] = 8;

向分配的格子里放数据

引用

a[0] = a[0]

* 10;

引用数据进行计算

1.

数组的常用操作

a)

声明数组并分配空间

数据类型[ ] 数组名 =  new 数据类型[大小];

b)

数组的初始化(声明的同时赋值)

方法1: 边声明边赋值。

int[ ] scores = {89, 79, 76};

int[ ] scores = new int[ ]{89, 79, 76};

方法2:动态地从键盘录入信息并赋值。

Scanner input = new Scanner(System.in);

for(int i = 0; i < 30; i ++){

scores[i] = input.nextInt();}

创建数组并赋值的方式在一条语句中完成。

所有的数组下标默认从0开始,而且访问时不可超出定义的上限,否则会产生越界错误。

for 遍历 (逆序输出)

c)

数组的遍历

for (intk = array.length - 1; k>= 0; k--) {// 逆序输出

System.out.print(array[k]+"\t");

}

for增强型函数

for (inttemp : array) {// 用for增强型函数对数组进行顺序输出

System.out.println(temp);

}

对数组进行增添,修改,删除

数组的增添举例:

String[] phones = new String[] {"iPones4S", "iPones5", null};

// null 不用加双引号

intindex = -1;// 增加监视器

for (inti = 0; i

if (phones[i] == null) {

index = i;

break;

}

}

if (index != -1) {

phones[index] = "iPones6";

} else {

System.out.println("数组已满");

}

System.out.println(Arrays.toString(phones));

注释:数组的修改与删除类似

d)

数组的排序

冒泡排序

for (intm = 0; m

for (intn = 0; n

if (array[n] >array[n + 1]) {

inttemp = array[n];

array[n] = array[n + 1];

array[n + 1] = temp;

}

}

}

e)使用Arrays 类操作数组

方法名称

说明

Arrays.

boolean

equals(array1,array2)

比较array1和array2两个数组是否相等

sort(array)

对数组array的元素进行升序排列

String

toString(array)

将一个数组array转换成一个字符串

void

fill(array,val)

把数组array所有元素都赋值为val

copyOf(array,length)

把数组array复制成一个长度为length

的新数组,返回类型与复制的数组一致

int

binarySearch(array, val)

查询元素值val在数组array中的下标

(要求数组中元素已经按升序排列

注释:import java.util.*;

2.

二维数组

一、

数组的初始化

String[][] str = newString[5][];

int[][] scores = newint[][] { { 90, 85, 54 }, { 76, 80 },{ 87 }

};

int[][] scores = { { 90, 85, 54 }, { 76, 80 }, { 87 }

};

二、

数组的遍历

publicclassCase5 { // 二维数组的遍历

publicstaticvoidmain(String[] args) {

int[][] scores = newint[][] { { 90, 78, 54 },

{ 76 , 80 }, { 87 }

};

for (inti = 0; i

for (intj = 0; j

System.out.println(scores[i][j]);

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值