最新整理Java语言基础.docx
《最新整理Java语言基础.docx》由会员分享,可在线阅读,更多相关《最新整理Java语言基础.docx(34页珍藏版)》请在冰豆网上搜索。
![最新整理Java语言基础.docx](https://file1.bdocx.com/fileroot1/2023-2/1/d4d8cb60-4cd3-46ce-920d-e3b2a783951c/d4d8cb60-4cd3-46ce-920d-e3b2a783951c1.gif)
最新整理Java语言基础
***####
Java基础
一.Java平台概述
1.Java特点
A.简单:
语言本身既容易学,又容易使用,而且功能强大。
B.面向对象:
Java是“纯”面向对象的语言。
其特征是:
没有全局变量和全局函数那样
的概念。
面向对象的编程更符合人们的思维方式。
C.与平台无关:
这是Java的最大优势,即所谓的”WriteOnce,RunAnywhere”,这个
特点也称为“可移植性(universality)”。
D.解释型:
源代码编译之后生成“字节码”文件,然后由JVM解释执行
E.多线程:
内置多线程支持
F.垃圾回收机制(garbagecollection):
用以自动回收内存垃圾。
G.安全性(security):
Java特有的沙箱(Sandbox)机制保证了这种网络语言的安全性。
同时它
删除了C++语言中复杂而且容易造成错误的指针,它的JavaApplet在客户端运行时也受到
限制,从而保证了程序运行的安全性。
H.效率稍低。
健壮性、安全性、平台无关性、可移植性等方面的提高总是要以牺牲性能为代价的,Java程序的解释执行的效率也要低于直接执行编译后的源码的效率。
可谓“鱼与熊掌不可兼得”,但是Java采用了一些很好的措施来弥补这些性能上的差距
I.不提供对硬件的直接操作
2.Java的三种平台
Java平台主要由java虚拟机(JVM,javavirtualmachine)和应用程序接口
(javaapi,javaapplicationprograminterface)组成.JVM实际上是运行在操作系统上的一种
程序,其主要作用是对java字节码进行解释并执行。
目前有三个版本:
Java2微型版(Java2MicroEdition,简称JavaME)
Java2平台标准版(Java2StandardEdition,简称JavaSE)
Java2平台企业版(Java2EnterpriseEdition,简称JavaEE).
3.JDK
JDK,即JavaDevelopKit,它是Java的基础。
Java程序编译,运行依赖于它。
JDK版本:
JDKV1.2JDKV1.3JDKV1.4JDKV1.5,JDKV6.0
4.Java应用程序常用开发工具
BorlandJbuilder2006,
IBMEclipse,
SunNetBeans
二.Java数据类型
1..基本数据类型
8种基本数据类型
类型
描述
boolean
在内存中占2个字节。
取值为:
true,false
char
2字节(java使用Unicode字符集处理文字)
整型数:
可以用十进制数
八进制数(用0做前缀)
十六进制数表示(用0X做前缀)
int
4字节(-2147483648~~2147483647)
long
8字节
short
2字节(-32768~~+32767)
byte
1字节(-128~~+127)
浮点数(实型数)
float
4字节
double
8字节
说明:
A.char类型采用Unicode编码。
一个汉字仍为一个字符。
Char实际上也是整型量,Unicode表中的字符就是一个字符常量,必须用单引号括起,例如:
’B’‘大’,’7’等
B.要获得一个字符在Unicode字符集中的编码,必须用强制类型转换。
例如:
(int)’Y’如果要获得一个0-65535中的数所表示的Unicode表中相应位置的字符,必须使用char进行转换。
例如:
(char)20320
2.对象类型
有多种形式,如String型对象,用于表示字符串,它是一个与字符串有关的类
Strings1=”你好”;
Strings2=newString(“Hello!
”);
3.类型转换:
3.1.隐式类型转换
byte-short-->int-long-float-double
char-->int-long-float-double
3.2.强制类型转换
intk=(int)3.7;//舍去小数
intm=(int)Math.sqrt(2*365.0);//舍去小数
3.3.String类型对象与基本数据类型间的运算
String对象可以进行“+”(字符串拼接运算),其结果仍然为String,,即
字符串+整数(实数)=字符串
例如:
intb=256;
System.out.println(“b之值为:
”+b+”。
”);
输出结果为:
b之值为:
256。
三.字面量和变量
(一)。
字面量
1.整数字面量
任何整数值都是一个整数字面量。
常用表示方法:
十进制表示法(默认)(基为0--9)1,56,92
八进制表示法(基为0--7),用前导0表示:
0712,05,013
十六进制表示法(基为0—9A-F)用前导0X表示:
0x120xFB,0XFF
2.浮点数字面量
表示有小数的十进制数。
可以用标准计数法或科学计数法表示。
Java中的浮点型
字面量默认是double,要指定一个float类型,必须在字面量之后增加后缀F(或f),当然,double字面量也可以显式增加后缀D(或d)
3.字符字面量
java字符字面量编码为unicode.,是16位的值,可以转换为整数并可以用整数运
算符,如+-运算符。
字符字面量用单引号括起来,如‘A’‘大’.其它表示法
如下表所示:
字符转移序列
\\
表示反斜杠
\’
表示单引号
\”
表示双引号
\r
表示回车
\n
表示换行
\f
表示换页
\t
表示水平制表符(对应键盘TAB键)
\b
表示退格键
\ddd
八进制字符
\uxxxx
十六进制(unicode码)字符(XXXX)
(二)。
变量
变量是基本的存储单元,由一个标识符,一个类型和一个可选的初始值组合而成。
1.变量标识符的组成:
变量标识符由字母,数字,下划线,$组成,但不能以数字开头,并且不能与java保留字相同。
如:
MyClassMy2,_width
2.变量的声明:
type<变量名>如:
inta;
3.变量初始化
<变量名>=<初始值>如:
intB=154StringmyName=”Jon”
4.变量作用域
java变量主要有三种作用域:
类作用域,方法作用域和块作用域,
类作用域变量在整个类的所有方法中均可使用;
方法作用域变量仅在本方法中可用。
块作用域,其标志为”{}”,仅在本块中可用。
四.运算符和表达式:
1.运算符
类型
运算符
一元运算符
++--+-()
算术运算符
*/%(取模)+-
移位运算符
<<(左移)>>(右移)>>>(左边空出的位用0填补)
关系运算符
<<=>>===!
=
位逻辑运算符(按操作数的二进制逐位运算)
&(与)^(异或)|(或)~(求反)
短路逻辑运算符
!
(非)&&(与)||(或)
条件运算符(三目运算符)
?
:
赋值运算符
=+=-=*=/=%=&=|=^=
对象运算符
instanceof
说明:
A.>>(右移)运算符运算法则:
当被移动的数为正数,则左边填0,否则,左边填1
左移”<<”相当于*2,右移”>>>”相当于/2.
B.运算符instanceof用于判断某个对象是否为某个类的实例,返回值为boolean。
例如
Strings;
Booleanb;
则sinstanceofBoolean返回false
sinstanceofStrng返回true
C.短路逻辑运算符(&&(与)||(或)!
(非))
按照优先级计算,当计算到能够确定该逻辑表达式的值时,停止后面的运算。
例如:
A>=100&&B<999如果给定A=25,则A>=100为假,无论B的值为何值,此时整个逻辑表达式的值都为假。
因此,B<999不再计算了。
D.位运算是按二进制逐位进行的,可以用来提供速度。
如:
检查某数是否为奇数,
Intn;
StringyesNo=(n&1)!
=0?
‘是’:
‘否’;
E.异或运算常用于加解密。
F.注意++--运算符它们。
在变量之前和之后效果是不一样的。
inti=5;
myArray[--I%=10]=10;//10赋值给数组myArray哪一个元素呢?
5,4,
2.运算符优先级:
最
高
最
低
()[].
++--~!
*/%
+-
>><<>>>
>>=<<=
==!
=
&
^
|
&&
||
?
:
=+=-=*=/=%=
说明:
使用园括弧可以强制改变优先级
3.表达式
由运算符将变量(包括字面量)连接而成的有意义的式子称为表达式。
如:
A+5;32*6+(34+7);B,A>=100&&B<999
五.程序控制语句
编程语言使用控制语句来产生执行流,从而完成程序状态的改变。
Java控制语句包含
选择,迭代,跳转。
1.选择语句:
1.1.if语句
if(<条件>)<语句>
[else<语句>]
说明:
A.<语句>可以是单条语句,也可以是多条语句,但必须用大括弧括起来。
B.if语句可以嵌套,即if语句体包含if语句
if(a<0)b=12;//没有else语句!
if(a<0)
b=12;
else
{
x=x+5;
y*=65+7;
}
//嵌套if语句
if(I==100){
if(j<20)a=b;
if(k>100)c=d;
elsea=c;
}
else
a=d;
1.2.switch语句
switch(<整型表达式>){
casevalue1:
<语句序列1>
casevalue2:
<语句序列2>
。
。
。
default:
<缺省语句序列>
}
说明:
1.<整型表达式>可以是:
byte,short,int或char类型或枚举类型
2.当表达式与某个case匹配时,则执行该case语句序列,只有所有的
case都不匹配时,才执行default语句序列;如果没有任何匹配的case,
同时又没有default语句,则什么也不做。
3.在switch语句中可以使用break语句跳出switch体。
4.Switch语句只能测试相等的情况,if语句可以测试表达式的任何情况
5.通常在多分支的情况下使用switch语句。
for(intI=0;I<12;I++){
Switch(I){
Case0:
Case1:
Case2:
Case3:
Case4:
System.out.println(“小于5的整数”);
Break;
Case5:
Case6:
Case7:
Case8:
Case9:
System.out.println(“大于5并且小于10的整数”);
Break;
Default:
System.out.println(“大于等于10的整数”);
}//endswitch
}//endfor
2.迭代语句
又称循环语句。
包含下列几种:
while循环
dowhile循环
for循环
2.1.while循环
while(<布尔表达式>)语句;
说明:
2.1.1.<布尔表达式>必须为boolean
2.1.2.语句如果为多条,则必须用大括弧括起来。
2.1.3.语句可以为空。
例如:
intiSum=0;
intI=10;
while(I>0){
iSum+=I;
i--;
}
intI=10,j=25;
while(++I>--j);
System.out.println(“I==”+i);
2.2.dowhile循环
do{
//语句
}while(<布尔表达式>)
这个循环至少要执行一次,一般用于命令选择。
Intn=10;
do{
System.out.println(“Tick“+n);
}while(--n>0)
2.3.for循环
for(<初始化>;<条件>;<迭代>){
//body;
}
说明:
A.如果只有一条语句,则大括弧可以省略。
B.在<初始化>部分可以声明变量,变量作用域仅在for内
C.在<初始化>部分和<迭代>部分可以包含一条以上的语句,用”,”分隔.,变量作用域仅在for内。
D.<初始化>,<条件>,<迭代>部分均可省略,这样可构成无限循环。
例如:
intnum;
booleanisPrime=true;
for(intI=2;I<=num/2;I++){
if(num%I==0){
isPrime=false;
break;
}
}
if(isPrime==true)
System.out.println(“Prime”);
Else
System.out.println(“NotPrime!
”);
3.for循环的for_each版本
for(type<变量>:
<集合变量>)
语句块;
说明:
1.用于对集合进行遍历。
2.Type必须与<集合变量>中的元素类型相同。
3.用于只向前的迭代。
4.银杏树
5.苏州美肤
6.苏州祛斑
7.苏州除皱
8.苏州脱毛
9.苏州人才网
10.南京调查公司
11.南京调查公司
12.不能改变<集合变量>中元素的值。
13.可以用于多维数组上的迭代
例如:
int[]num={1,2,3,4,5,9,7};
intiSum=0;
for(intx:
num){
if(x%2==0)
iSum+=x;
}
intsum=0;
intnums[][]=newint[5][3];//二维数组
for(intI=0;I<3;I++)
for(intj=0;j<5;j++)
nums[I][j]=(I+1)*(j+1);
for(intx[]:
nums){
for(inty:
x){
sum+=y;
}
}
System.out.println(“Summation:
”+sum);
//数组查找
4.跳转语句:
java支持三种跳转语句:
breakcontinuereturn,这些语句把控制转移到程序的另一部分。
4.1.break语句
有三种用途。
终止switch语句中的语句序列,可以用于退出循环;可用于goto
语句的一种替代形式。
4.1.1.形式1:
break用于跳出当前循环(跳出一层).
4.1.2.形式2:
break<标签>用于跳转到<标签>处。
<标签>是一个带有冒号(:
)后缀的标识符。
且<标签>标识一块语句(用大括弧括起来),最重要的作用是从最内层循环退出
Booleant=true;
First:
{
second:
{
third:
{
System.out.println(“Beforethebreak.”);
If(t)breaksecond;
System.out.println(“thiswon’texecute.”);
}
System.out.println(“Beforethebreak.”);
}
System.out.println(“Thisisaftersecondblock..”);
}
//从最内层循环跳到最外层循环
outer:
for(intI=0;I<3;I++){
System.out.println(“Pass“+I+”:
”);
For(j=0;j<100;j++){
If(j==0)breakouter;
System.out.println(j+“.”);
}
System.out.println(“Thiswillnotprint.”);
}
System.out.println(“Loopscomplete.”);
4.2.continue语句
4.2.1.形式1
continue忽略该语句后面的所有语句,回到循环迭代处。
4.2.1.形式2
continue<标签>用于跳转到<标签>所在的那个循环语句的迭代处。
例如:
输出乘法9*9表
outer:
{
for(intI=0;I<10;I++){
for(intj=0;j<10;j++){
if(j>I){
System.out.println();//空行
Continueouter;
}//endif
System.out.println(““+(I*j));
}//endfor(j)
}//endfor(i)
System.out.println();
}
0
11
124
1369
…
091827364554637281
privatevoidContinue2(){
outer:
for(inta=1;a<=3;a++){
for(intb=1;b<=2;b++){
if(a<=2)
continueouter;
System.out.println(a+""+b);
}//endfor(b)
System.out.println("你好"+a);
}//endfor(a)
}
//输出:
31
32
你好3
//求素数
publicvoidOutputPrime(){
finalintUpper2=10;
outer:
for(inta=2;a<=Upper2;a++){
for(intb=2;b<=a-1;b++){
if(a%b==0)
continueouter;//a不是素数,则转到outer,处理下一个整数
}//endfor(b)
System.out.print(a+"");//输出素数a
}
}
//输出结果:
357
//break<标签>
publicvoidBreak2(){
Randomr=newRandom();
int[][]a=newint[3][5];
//产生随机整数数组
for(inti=0;i<3;i++){
for(intj=0;j<5;j++)
a[i][j]=r.nextInt(20);
}
inti,j=-1;
intiSum=0;
outer:
for(i=0;i<3;i++){
for(j=0;j<5;j++){
iSum+=a[i][j];
if(iSum>=50){
breakouter;//直接跳到最外层循环
}
}//endfor(j)
}//endfor(i)
System.out.println(i+"---"+j+"和"+iSum);
}
4.3.return语句
return[表达式]//从一个方法中返回(表达式的值)
returnx+y*3;return(b==5);//返回布尔量
return//
练习:
0.计算7+77+777+。
。
。
的前10项之和。
1.编写一个程序,用以判断一个5位数n各位数字的奇偶性,并求出他们的和。
2.根据给出的三门课程的成绩,求出平均分,总分和评语(>70为优秀,其余为普通)
3.假设数组A中的数据已按由小到大的顺序存放,设计一程序把数组A中相同的数据删得
只剩一个,然后以每行4个数据的格式输出A数组.
4给定一个二维数组B,编程找出每行的最大值,最小值,并将其保存到对应的二维数组s中
即第0行中的最大值,最小值放入s[0][0],s[0][1],第1行中的最大值,最小值放
入s[1][0],s[1][1]….
3.根据下列数据特点,用函数为各元素赋值,生成一个字符型二维数组,然后输出
数组各元素。
ABCDEFGHIJ
CDEFGHIJKL
EFGHIJKLMN
GHIJKLMNOP
IJKLMNOPQR
4.根据下列数据特点,用函数为各元素赋值,生成一个字符型二维数组,然后输出
数组各元素。
1@2@3@4@5@
2@3@4@5@6@
3@4@5@6@7@
4@5@6@7@8@
5@6@7@8@9@
5.创建一个整型数组f,它有25个元素,元素之间符合下列规律,然后输出它们
f[0]=1,f[1]=2
f[I]=f[I-2]+f[I-1](I>=2)
6.根据上一题要求,编写一段程序输出f[n]的值(其中n为任意数)。
要求使用数组和不使用数组完成。
7.编写程序实现下列目的:
在一个9位整数n(123456789L)中,将其各位上的数都按素数、合数、其它归类,并用字符’*’表示各类数出现的频率。
输出结果如下:
素数****
合数****
其它*
8.编写程序输出1—100间的整数,并且满足条件:
它是3的倍数,但不是5的倍数,也不是9的倍数。
9.设计一个函数,输出下列结果
*****
****
***
**
*
10.输出100以内的所有素数
11.一个数如果恰好等于它的因子之和,这个数称为”完数”,编写程序求1---