Java复习资料Word文档格式.docx
《Java复习资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java复习资料Word文档格式.docx(38页珍藏版)》请在冰豆网上搜索。
\b退格
字符串必须在同一行开始和结束。
变量(Varialbe):
成员变量(全局变量)、局部变量[两者同名时,局部变量覆盖成员变量]
变量由一个标识符类型及可选初始值的组合定义的。
Java中所有变量必须先声明后再使用,多个变量用“,”分开。
所有变量都定义了一个作用域(scope),该作用域只对该作用域内的程序可见。
1)成员变量(对象的属性)
定义其语法:
权限修饰符返回值类型方法名(参数类型参数名){
......//方法体
Return返回值;
参数可有可有,也可是对象或基本数据类型的变量
成员方法有返回值(无void,有return,使用后终止方法执行)和没有返回值(有void),另返回值类型要与方法返回类型一致。
注:
一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局总变量进行访问(即局部变量覆盖成员变量)。
类成员变量和成员方法统称为类成员。
2)局部变量:
在成员方法内定义的一个变量。
(使用时必须初始化或赋值)
方法中的形参可以作为一个局部变量。
有效范围(作用域)为声明到该变量的结束为止,在相互不嵌套的scope中可以同时声明两个名称、类型相同的局部变量,在scope作用范围内没有声明局部变量的代码。
例:
packageNumber
publicclassFirst{
staticStrings1="
你好!
"
;
//成员变量或类变量
publicstaticviodmain{String[]args){
Strings2="
Java"
//局部变量
System.out.println(s1);
System.out.println(s2);
Java的转换类型:
1、Java的自动转换(隐式转换):
发生拓宽转换(低→高,不含逻辑和字符类型)
byte<
short<
int<
long<
float<
double
1)2种类型兼容
2)目的类型数的范围比来源类型的大
拓宽转换、数字转换(其中int和float)兼容,数字类型和字符类型或布尔类型不兼容。
intx=50;
floaty=x;
//将x赋值给y
2、强制转换(不兼容的类型转换,显示转换,高→低)
通用格式:
(目标类型)value
截断:
把浮点值赋给整数时发生(舍小数)
类型的提升:
所有byte和short型值都被提升到int型;
如有一个操作数是long型,整个表达式被提升到long型;
如有一个操作数是float型,整个表达式被提升到float型;
如有一个操作数是double型,整个表达式被提升到double型;
inta=(int)45.24;
//a为45
longy=(long)456.6F;
//y为456
intb=(int)'
d'
//b为100
运算符(operators):
4大运算符:
算术、位、关系、逻辑。
%(取余||取模,用于浮点型)、++(递增)、--(递减)、+=(加法赋值)、-=(减法赋值)、*=(乘法赋值)、/=(除法赋值)、%=(模运算赋值)
运算符可以是数字类型,可以用于char不能用于boolean,对整数进行除法运算时,所有余数都要被舍去。
y=++x<
==>
x=x+1andy=x;
y=x++<
y=x,x=x+1
1)位运算符(bitwiseoperators):
运算符含义
~按位非(NOT)
&
按位与(AND)
|按位或(OR)
^按位异或(XOR)
>
>
右移(正数右移,左边空出位用0
填充;
负数右移,左移空出位用1填
充;
一个数左移n位,就将此数*2n,
一个数右移n位,将此数/2n)
无符号右移(左边空出的位用0填充,
只对32位或者64位的值有效)
<
<
左移
&
=按位与赋值
|=按位或赋值
^=按位异或赋值
=右移赋值
=右移赋值(左边空出位用0填充)
=左移赋值
负数的二进制是其正数的二进制各个位取反再加1
对负数解码,首先对其所有位取反再加1
-0和0表示方法一样,-1的解码为11111111(-1右移总是-1)
Java用高位来代表负数,不管高位如何,它决定一个整数的符号,最高位为0,则代表正数;
最高位为1,则表示负数。
~(对运算符每一位取反)、&
(两数均为1,则为1)、OR("
|"
,任何一个数为1,则为1)、XOR("
^"
,两个数不同时为1)
位移运算符至少需要32位整型,当int型变量a>
n,且n大于32位时,则取a>
m,其中系统自动设置m=n%32,即m为n除以32后的余数。
inta=4试运行a>
33,并求其结果。
因n=33大于33,故m=33%32=1,所以a=1本例a>
33可以用a>
1替换。
2)关系运算符:
不等于(!
=)相等(==)
关系运算符产生的结果是布尔型。
3)布尔逻辑运算符(其运算数只能用于布尔型)
逻辑与
|逻辑或
^异或
||短路或
短路或
!
逻辑反
=逻辑与赋值
|=逻辑或赋值
^=异或赋值
==相等
!
=不相等
?
三元运算符(表达式?
值1:
值2)
运算符优先级
最高
()[].
++--~!
*/%
+-
(适用于byte、int、
short、long)
=<
=
==!
^
|
||
?
op=
最低
代码注释:
“//”→单行注释,从“//”开始到换行结束的所有内容。
“/**/”→多行注释,从符号“/*”到“*/”间所有内容(可换行,可嵌套单行注释)。
“/***/”→文档注释,从符号“/**”到“*/”间所有内容。
编码规范:
1、每条语句单独占一行,一条命令要以分号(英文状态下)结束。
2、在声明变量时,尽量使每个变量的声明单独占一行,即使是相同的数据类型也要将其放置在单独一行上,有助于添加注释,对于局部变量,应在声明的同时对其进行初始化。
3、在Java代码中,关键字与关键字间如果有多个空格均被初视为一个。
4、为了方便日后的维护,不要使用技术性很高、难懂、易混淆的语句。
5、对于关键的方法要多加注释。
语句:
1)复合语句(块语句):
可嵌套,由“{”开始到“}”结束。
2)条件语句(if语句)
if(布尔表达式){
语句序列//当仅为一条语句时,可省略“{}”,也可保留。
}
若干语句//当仅为一条语句时,可省略“{}”,也可保留。
}<
若干语句?
值2
else{
if(布尔表达式1){
语句序列1//当仅为一条语句时,可省略“{}”,也可保留。
elseif(布尔表达式2){
语句序列2//当仅为一条语句时,可省略“{}”,也可保留。
switch分支语句(测试一个变量是否符合某个条件)(intcharbyteshort)
switch(表达式){
case常量值1:
语句块1
[break;
]
case常量值n:
default:
语句块n+1
switch语句先计算表达式的值,如和某个case后的值相同,则执行该case语句后的若干语句,直到遇到break为止,如无break则继续执行case后的语句,直到遇到break为止,若表达式的值没有和case后的值相同,则执行default后的语句。
3)循环语句(while、do...while、for)
while(条件表达式){
执行语句
do{
While(条件表达式);
for(初始化表达式;
循环表达式;
循环后操作表达式){
语句序列
初始化表达式:
负责完成变量的初始化。
循环表达式:
值为boolean型表达式,指定循环条件。
循环后操作表达式:
负责修整变量,改变循环条件(通常是增加或减少控制变量的一个表达式)。
用for实现无限循环:
For(;
){
......//可以用break语句跳出循环
foreach(元素变量x:
遍历对象){//x不必对其初始化
引用了x的Java语句
break和continue区别:
break用于跳出循环语句,不再进行这次循环的迭达表达式;
continue用于终止当前这一轮的循环,而进入下一轮。
另标签只可放在循环前端,否则无法编译。
字符串
1、声明字符串:
Stringstr=[null](省略null表示str变量是未初始化的状态,否则表示声明的值就等于null
2、创建字符串
创建String(chara[])方法:
String(chara[],intoffset,intlength)
offest:
开始截取字符串的位置
length:
截取字符串的长度
chara[]={'
s'
'
t,'
u'
e'
n'
t'
};
Strings=newString(a,2,4);
等价于Srings=newString("
uden"
);
3、字符串连接
1)用“+”连接多个字符串,一句相连的字符串不能分开在两行写;
如要分开写,则用“+”连接,且“+”两边字符串用“”连接。
System.out.println("
Ilike"
+
连接其它字符串"
):
2)如果将字符串同其他基本数据类型进行连接,会将其他基本数据类型直接转换成字符串。
4、获取字符串
1)获取字符串长度:
用String的length()方法(含空格)
语法:
str.length();
例:
Strings="
Wearestudent"
intsize=str.length();
//size=15
2)字符串查找:
indexOf()与lastIndexOf()方法
str.indexOf(substr);
str.lastIndexOf(substr)
indexOf:
首次出现的位置
lastIndexOf:
最后次出现的位置
indexOf(Strings)如果没有检索到字符串s,则返回值-1
lastInderOf(substr)(substr:
要查找的字符串)如果参数为空,则返回的结果与调用该字符串的length()方法的返回值相同。
intsize=str.indexOf("
a"
//size=3
intsize=str.lastIndexOf("
等价于
intsize=str.length()
3)获取指定索引位置的字符串
str.charAt(intindex)(index:
整型值,用于指定要返回字符的下标,字符下标从0开始)
publicclassRef{//创建类
publicstaticvoidmain(Stringargs[]){//主方法
Stringstr="
helloword"
//定义字符串str
charmychar=str.charAt(5);
/*将字符串str中索引位置是5的字
符返回*/
System.out.println("
字符串str中索引位置是5的字符为:
+mychar);
//输出信息(空格)
4)字符串的操作
[1]获取子字符串:
{1}str.substring(intbeginIndex):
从指定的索引位置开始截取,直到字符串结尾的子串。
(空格占一字符)
Strings=newString("
HelloJava"
Stringsubstr=str.substring(3)//值为loJava{2}str.substring(intbeginIndex,intendIndex):
从字符串的某一索引位置开始截取到某一索引位置结束的子串。
(两者都包含)
Strings=newString("
Stringsubstr=str.substring(0,3)//值为hel
[2]除去空格:
str.trim();
去除空格后长度:
+str.str.trim().length());
//值为9
[3]字符串替换:
str.replace(charoldChar,charnewChar)
oldChar:
要替换的字符或字符串。
newChar:
用于替换原来的字符串的内容。
如果oldChar没有出现在表达式中,则将原字符串返回;
如果一个字符多次出现,由替换所有该字符。
要替换的oldChar的大小写要与原字符串中字符的大小写一致。
Stringsubstr=str.replace("
H"
,h)//值为helloJava
4)判断字符串开始与结尾
starsWith()与endsWith()返回值为boolean类型
starsWith()用于判断当前字符串对象的前缀是否是参数指定的字符串。
str.starsWith(Stringprefix);
endsWith():
用于判断当前字符串是否是以给定的子字符串结束。
str.endsWith(Stringsuffix);
Stringnum="
2201948"
booleana=num.starsWith("
22"
booleanb=num.endsWith("
48"
System.out.println("
字符串num是否以22开始?
+a);
字符串num是否以48结束?
+b);
5)判断字符串是否相等:
用equals()方法和equalsIgnoreCase()方法
如两个字符串具有相同的字符和长度,则用equals()方法,返回值为true
str.equals(Stringotherstr)//区分大小写
str.equalsIgnoreCase(Stringotherstr)//不区分大小写
sr、otherstr是两个参加比较的字符串对象。
Stringa=newString("
Iamastudent"
Stringb=newString("
iamastudent"
booleans1=a.equals(b);
booleans2=a.equalsIgnoreCase(b);
System.out.println(a+"
equals"
+b+"
:
+s1);
equalsIgnoreCase"
+"
+s2);
6)按字典顺序比较两个字符串(基于各个字符的Unicode值)
将String对象表示的字符序列与参数字符串所表示的字符序列进行比较:
如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;
如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;
如果这两个字符串相等,则结果为0。
pareTo(Stringotherstr)//compareTo只有在equals()返
回true时才返回0
7)字母大小写转换
str.toLowerCase()//大写转为小写
str.toUpperCase()//小写转为大写
如无被转换的字符,则将字符串返回。
publicclassUpAndLower{//创建类
publicstaticvoidmain(Stringargs[]){//主方法
Stringstr=newString("
abcDEF"
//创建的字符串str
Stringnewstr=str.toLowerCase();
//使用toLowerCase()方法实行小写转换
Stringnewstr2=str.toUpperCase();
//使用toUpperCase()方法实行大写转换
System.out.println(newstr);
//将转换后的结果输出
System.out.println(newstr2);
8)字符串的分割
两种形式:
(1)split(Stringsign)//根据给定的分割符对字符串进行拆分
//sign为分割字符串的分割符,可用正则表达式
(2)split(Stringsign,intlimit)//limit为限定分割的次数
Stringstr=newstring("
and,tjha,thak,tye,lix,kja"
Stringnewstr[]=str.split("
"
for(inti=0;
i<
newstr.length;
i++)
System.out.println(newstr[i]);
Stringnewstr2[]=str.length("
2);
newstr2.length;
System.out.println(newstr2[i]);
9)格式化字符串(format()用于创建格式化的字符串)
(1)str.format(Stringformat,object...args)//args格式字符串中由格式说明符用
的参数
(2)str.format(Local1,Stringformat,boject...args)//1---格式化过程中要应用的语
言环境,如果1为null,则不进行本地化
10)日期和时间字符串格式化
(1)日期格式化
Datedate=newDate();
Strings=String.format("
%te"
date);
//返回一个月中的天数
常见的日期格式化转换符
转换符说明示例
%te一个月中的某一天(1-31)2
%tb指定语言环境中的月份简称Feb(英文)、二月(中文)
%tB指定语言环境中的月份全称February、二月
%tA指定语言环境中的星期几全称Monday、星期一
%ta指定语言环境中的星期几简称Mon、星期一
%tc包括全部日期和时间信息星期二三月2513:
37:
23
CST2008
%tY4位年份2008
%tj一年中的第几天(001-366)085
%tm月份03
%td一个月中的第几天(01-31)02
%ty2位年份08
(2)时间格式化
常见的时间格式化转换符
转换符说明示例
%tH2位数字的24小时制(00-23)12
%tI2位数字的12小时制(01-12)05
%tk2位数字的24小时制(0-23)5
%tl2位数字的12小时制(0-12)10
%tM2位数字的分钟(00-59)05
%tS2位数字的秒数(00-60)12
%tL3位数字的毫秒数(000-999)920
%tN9位数字的微秒数(000000000-999999999)085000000
%tp指定语言环境下上午或下午标记下午、pm
%tz相对于GMTRFC82格式的数字时区偏移量+0800
%tZ时区缩写形式的字符串CST
%ts1970-01-0100:
00:
00至现在经过的秒数1206426646
%tQ1970-01-0100:
00至现在经过的毫秒数1206426737453
(3)格式化常见的时间日期组合
常见的时间和日期组合斯格式
转换符说明示例
%tF"
年-月-日"
格式(4位年份)2008-03-09
%tD“月/日/年”格式(2位年份)03/25/08
%tc全部日期和时间信星期二三月2515:
20:
35CST2008
%tr“时:
分:
秒PM(AM)”格式(12时制)03:
22:
06下午
%tT“时:
秒”格式(24时制)15:
23:
25
%tR“时: