窗口与网络编程第2课oommttpptConvertor.docx
《窗口与网络编程第2课oommttpptConvertor.docx》由会员分享,可在线阅读,更多相关《窗口与网络编程第2课oommttpptConvertor.docx(28页珍藏版)》请在冰豆网上搜索。
窗口与网络编程第2课oommttpptConvertor
Java语言基础
主要内容
Java程序结构
Java语法规则
基本数据类型类
数组
字符串
流程控制语句
2
程序结构
package
import---
class类名1{
属性定义
方法名1(){
-----
}
方法名2(){
-----
}
}
class类名2{
-------
}
Java语言的源代码由一个或多个编译单元(compilationunit)组成,每个编译单元只能包含下列内容:
(1)一个程序包语句(packagestatement)
(2)导入语句(importstatements)
(3)类的声明(classdeclarations)
(4)接口声明
(interfacedeclarations)
程序结构
每个Java语言的编译单元可包含多个类或接口,但是每
个编译单元最多只能有一个类或接口是公共的。
每个编译单元就是一个以.java为后缀的Java语言源程
序文件。
一个程序可包括若干个类,各类之间存在并列、继承
和包含关系。
这些类通常是在一起协同工作的:
每一个类都可能需
要创建其他类的对象,并调用类或对象的属性及方法。
编程只能在方法中进行。
编译后每个类产生一个.class文件。
包是每个Java系统用来组织类的组织,功能作用和来
源相关的类通常放在同一个包中。
java的名字空间和包
作为一种在整个Internet上动态装载模块的语言,Java
特别注意避免名字空间的冲突。
全局变量不再是语言的组成部分(没有全局的属性与
方法)。
所有的方法和属性都在类中定义,是类的组成部分。
每个类又是包的组成部分。
全限定名:
包名.类名.方法名
import打开一个包后,可直接指定该包中的类名。
在本类中,可以直接使用方法名及属性名。
包的概述
包是用途相近但功能不同的一些类和接口的松散集合。
类库由若干包组成。
java.langJava语言核心类库,包含了运行Java程序必不可少的系统类(如基本数据类型,基本数学函数,字符串处理、线程、异常处理类等),每个Java程序运行时,系统会自动引入该包。
java.awtJava语言用来构建图形用户界面的类库,包括许多界面元素和资源,在三个方面提供界面设计支持:
低级绘图操作(如Graphics类);图形界面组件和布局管理(如Checkbox类,Container类,LayoutManager接口等),以及界面用户交互控制和事件响应(如Event类),利用该包可很方便设计出精美图形界面。
包的概述
java.applet用来实现运行于Internet浏览器中的JavaApplet的工具类库,它仅包含一个非常有用的类java.applet.Applet。
(创建Applet小程序)
java.ioJava语言的标准输入/输出类库,包含了实现Java程序与操作系统、用户界面以及其他Java程序做数据交换所使用的类。
(输入输出)
Java语言用来实现网络功能的类库,利用包中的类,开发者可以编写自己的具有网络功能的程序。
java.util实用程序类,包括了Java语言中的一些低级的实用工具(如随机数、日期、系统属性…)
Java类库是系统提供的已实现的标准类的集合,是Java的API,帮助开发者方便快捷地开发Java程序。
语句规则
语句种类
说明语句如属性说明、变量说明等
表达式语句
控制语句(条件、循环、跳转)
异常处理语句
块语句(代码块,一组语句用花括号括起来)
注释(被Java编译器忽略)
//---注释一行
/*---*/一行或多行注释
/**---*/文档注释
语句规则
Java语言标示符
在Java语言中定义的变量、方法、类和对象的名称都是标示符。
Java语言标示符必须以大写字母“A”到“Z”和小写字母“a”到“z”或“_”、“$”开头,后面可以跟包含字母和数字0~9的字符。
有效的标示符myname$bill_100
无效的标示符486_cpu@email
基本语句用标示符“;”结束
当在Java语言中需要使用变量、方法、类和对象等标示符时,都要在使用前进行声明。
Java语言中有60个关键字。
数据类型与说明语句
Java程序中所处理的数据是将各种数据类型实例化后的数据。
数据类型实例化的方法:
说明语句
实例化数据的两种形式:
变量与常量
数据类型
数据类型关键字占用比特数缺省数值
布尔型boolean8false
字节型byte80
字符型char16‘\u0000’
短整型short160
整型int320
长整型long640
浮点型float320.0F
双精度型double640.0D
常量
定义常量的语法格式:
finaltypeconstantName=constantValue;
关键字类型常量名常量值
布尔常量truefalse
整型常量
一般常量:
32bit长整型常量:
64bit(88L)
十进制数:
非0开头的正负整数105,-23
八进制数:
0开头的正负整数017(15),-023(-19)
十六进制:
0x开头的正负整数0x2F(47),-0xa8(-
168)
常量
浮点常量
一般浮点常量(32bit)3.14F6.18E3F
双精度浮点数(64bit)7.56D6.02E23(D可省)
char型常量:
用单引号界定
‘’,‘a’
采用Unicode码,从‘\u0000’~‘\uFFFF’,其中‘\u00’~‘\uFF’为ASCII码
字符串常量:
用双引号界定
“HELLO,WORLD”
+号的特殊用法
“Hello”+“World”即“HelloWorld”
若a=4,则“a=”+a即“a=4”
常量
特殊字符
引用方法对应Unicode码意义
‘\b’‘\u0008’退格
‘\t’‘\u0009’横向跳格、水平制表符tab
‘\n’‘\u000a’换行
‘\r’‘\u000d’回车
‘\”’‘\u0022’双引号
‘\’’‘\u0027’单引号
‘\\’‘\u005c’反斜线
变量
变量声明:
先声明,后使用
声明变量的格式:
typevariableName1,variableName2,···;
typevariableName1[=initValue],variableName2[=initValue],···;
类型变量名[变量初始值]
如:
doublea,b,c;
intnSecond=10;
基本数据类型
Java标识符
字母、数字、_、$组成,但以字母、_、$开头
区分大小写
数据类型与说明语句
基本数据类型说明语句:
booleanb=true;
shortsi=128;
inti,j,k=-99;
longl=123456789;
charch='J';
charchc='中';
floatf=3.1415926;
doubled=-1.04E-5;
Java几乎是将字符串视为基本数据类型
Strings=“你好!
”;
数据类型转换
同种数据类型转换:
短类型长类型:
默认
长类型短类型:
强制
不同数据类型转换——字符/数值:
强制
例:
inta;
longb;
charc;
b=a;
a=(int)b;
c=(char)a;a=(int)c
布尔型与其他数据类型之间不能强制类型转换
byte
short
int
long
float
double
数据类型转换
importjava.io.*;
publicclassa
{publicstaticvoidmain(Stringargs[]){
inti=65;
charc=‘a’,cc=‘刘’;
System.out.println(i);65
System.out.println((char)i);A
System.out.println(c);a
System.out.println((int)c);97
System.out.println(cc);刘
System.out.println((int)cc);21016
System.out.println((char)29579);王
}
}
Java运算符
一般运算是把运算对象作为一个整体处理,而位运算是把整型数运算对象拆开,以位(bit)作为运算对象
Java运算符
合并运算符
二元运算符@=,a@=b即a=a@b
a+=bþa=a+b;
运算符的优先级
括号最优先
注释
//行注释
/**/块注释
/***/文档注释
+号:
可连接字符串“He”+“llo”为“Hello”
运算符例—移位
移位
>>带符号右移:
左侧空出位全用符号位填充
>>>不带符号右移:
左侧空出位用0填充
<<左移:
符号位被挤掉
x二进制补码表示x<<2x>>2x>>>2
3000011110011110000000011100000111
-1711101111101111001111101100111011
128>>1128/21=64
256>>4256/24=16
-256>>4-256/24=-16
128<<1128*21=256
16<<216*22=64
运算符例
自运算符++、--
j++、j--、++j、--j
运算符的位置决定了自运算的顺序(在操作数变量之前或在操作数变量之后)
a=3b=5c=(a++)*ba=4c=15
a=3b=5c=(++a)*ba=4c=20
三目条件运算符(?
:
)
D=表达式A?
表达式B:
表达式C
A为真,返回表达式B
A为假,返回表达式C
总是返回B,C中的长类型
例:
intx=5,y=8;longz=2;
longk=x>3?
y:
z;//k=8
语句
在java语言中语句以“;”为终结符。
一条语句构成了一个执行单元。
Java中有3类语句。
1、表达式语句
赋值表达式语句:
a=896.7;
增量表达式语句:
a++;
方法调用语句:
System.out.println(a);
对象创建语句:
Integerintegerobject=newInteger(4);
2、声明语句
用于声明变量或方法:
doublea=896.7;
语句
3、程序流控制语句
程序流控制语句控制程序中语句的执行顺序,例如for循环和if语句都是程序流控制语句。
If(m>n){//if语句块
System.out.println(“themaxnumberofmandnis”+m);
}
Else{
System.out.println(“themaxnumberofmandnis”+n);
}
Wrapper类(java的包装类)
Integer
属性
static intMAX_VALUE返回int型数据的最大值
static intMIN_VALUE返回int型数据的最小值
构造方法
Integer(intvalue)
Integer(Strings)
方法
intintValue()doubledoubleValue()
StringtoString()
staticStringtoString(inti)
staticintparseInt(Strings)
staticIntegervalueOf(Strings)
类型转换—利用类/对象方法
利用类方法(静态方法)
staticintInteger.parseInt(“23”)
staticStringInteger.toString(23)
staticdoubleDouble.parseDouble(“12.3”)
staticStringDouble.toString(12.3)
利用对象方法
Doubled;Strings;//声明
d=newDouble(12.3);//创建
s=d.toString();
Double.valueOf(“12.3”).doubleValue();//返回
引用类型—类
定义类(新的数据类型)
classMyDate{
intday;
intmonth;
intyear;
}
基本数据类型——直接分配内存空间
inti,j,k;
引用类型
MyDated1;
d1=newMyDate();
引用类型—类
MyDated1=newMyDate();
d1.day=28;
d1.month=12;
d1.year=70;
引用类型—数组
数组在其他语言中是相同数据类型的元素的集合;而在Java中,数组是独立的类,有自身的方法,不是变量的集合
一个数组是数组类的一个对象。
数组是通过new运算符来动态创建,并分配与数组下标数和维数、数组数据类型相匹配的内存空间。
数组一经被分配了适当的空间,则其所有元素都初始化为默认值。
Java中,数组声明允许方括号跟在数组类型声明之前和后。
数组的声明
intintArray[];--([]不是指长度可变)
int[]intArray;
数组
数组的长度不是在声明时指定,而是在创建时由所开辟的内存单元数目确定。
数组的创建(3步)
数组的声明
创建数组空间
创建数组元素并初始化。
若数组元素为基本数据类型,第三步可以省略;当数组元素为对象时,则必须对数组元素进行创建和初始化。
一维数组定义int[]intArray;
数组类对象引用说明(intArray)
动态分配空间(newint[5]或数组初始化)
int[]intArray=newint[5];
33
数组
创建方法:
先声明后创建
intintArray[];
intArray=newint[10];
在声明的同时创建
intintArray[]=newint[10];
直接赋值
int[]intArray={1,2,3,4,5};
数组元素为类的对象
定义数组
Integer[]a;
Integer[]b=newInteger[5];
创建数组元素的对象实例
for(inti=0;ib[i]=newInteger(i*10);
创建数组时初始化
Integer[]d=
{newInteger
(1),newInteger
(2),newInteger(3)};
例:
ArraySize.java
数组元素为对象的创建
数组元素为基本数据类型的创建
//Arraysofobjects:
Weeble[]a;//仅声明
Weeble[]b=newWeeble[5];
//仅创建,未初始化各元素
Weeble[]c=newWeeble[4];
for(inti=0;ic[i]=newWeeble();
//创建数组,之后初始化各元素
Weeble[]d={
newWeeble(),newWeeble(),newWeeble()};
//创建数组时初始化
//Arraysofprimitives:
int[]e;
//仅声明
int[]f=newint[5];
//仅创建,未初始化各元素,缺省为0
int[]g=newint[4];
for(inti=0;ig[i]=i*i;
//创建数组,之后初始化各元素
int[]h={11,47,93};
//创建数组同时初始化
数组
int[]intArray={11,47,93,26,38};
分配空间+赋初值
静态初始化必须与数组定义放在一个语句中。
intArray=newint[10];//原数组丢失
数组定义后还不能立即被访问,因为
还没有为其分配内存空间。
数组必须经定义后再创建这一步才能使用
XXXX
intArray
多维数组定义
在Java中,对多维数组的定义是通过对一维数组的嵌套式定义来实现,即数组的数组
typearryName[][];
定义之后,须用关键字new建立数组,即为其分配内存空间,可采用两种方法:
一步完成二维分配
如:
int[][]intArray=newint[2][8];
分别为每一维分配存储空间,但须从高维开始
如:
int[][]intArray=newint[2][];//最高维含2个元素
intArry[0]=newint[8];//第二维第一个元素为8个整型数
intArry[1]=newint[8];//第二维第二个元素为8个整型数
int[][]intArray={{1,3},{2,4},{1,2,3,4}};
数组类
数组使用之前要确定大小,可以在程序中根据需要指定其大小(如用表达式计算出大小)。
一旦生成数组,大小不可改变。
java不支持变长数组。
数组的属性—length代表数组元素的个数
数组是一个对象,length为数组的成员变量,调用它可查看数组长度
Java数组作为一种对象类型,可以作为方法的参数,传递的是指向数组的引用。
越界例外
用下标变量访问数组元素(0~N-1),越界时系统会产生例外:
ArrayIndexOutOfBoundsException例外
程序实例
Array1.java
publicclassArray1{
publicstaticvoidmain(Stringargs[]){
inti;
inta[];//声明一个数组a
a=newint[5];//分配内存空间,数组元素为5
for(i=0;i<5;i++)//对数组元素进行赋值
a[i]=3*i+1;
for(i=a.length-1;i>=0;i--)
System.out.println("a["+i+"]="+a[i]+",\t");
}}
程序实例Array3.java
intm1,m2;
int[][]a;
m1=5;m2=8;
a=newint[m1][m2];
for(inti=0;i<5;i++)
for(intj=0;j<8;j++)
a[i][j]=i*j;
for(inti=0;ifor(intj=0;jSystem.out.print(a[i][j]+“\t”);
System.out.println("");
}
JAVA中的字符串
Java中的字符串也是类。
由于使用频繁,有时也被视为基本类型
遇到双引号自动创建String类的对象
提供字符串运算符,字符串的连接:
+
定长字符串:
String类(效率较高)
不能更改
可变字符串:
StringBuffer类(使用灵活)
可追加、插入、修改,但内存管理复杂
引用类型—字符串类
Java语言将字符串作为对象来处理,每一个字符串常量是字符串类String的一个实例。
构造方法
String()、String(String)、String(charchars[])
创建字符串
Strings=newString();//生成一个空字符串
Strings=newString(“abc”);
char[]data={'a','b','c'};
Strings=newString(data);
Strings=“abc”;
//采用字符串直接定义获得内存空间
引用类型—字符串类
intx=123;
inty=x;
Strings1=“abc”;
Strings2=s1;
null
x
y
s1
s2
“abc”
s2=“def”
引用类型—字符串
Strings1=newString(“abc”);
Strings2=newString(“abc”);
0x01234567
0x12345678
s1
s2
“abc”
“abc”
s1==s2false
s1.equals(s2)true
引用类型—字符串
Strings1=“abc”;
s1=s1+“def”;
XXXXX
“abc”
s1
字符串类-String
方法
intlength()//返回字符串长度
例:
“Java与面向对象程序设计”.length()的值为13
charcharAt(intindex)//返回指定位置的字符
例:
"Java与面向对象程序设计".charAt
(2)
intcompareTo(Strings2)//按字母序进行字符串比较
booleanequals(Objectobj)//判断字符串相等(区分大小写)
booleanequalsIgnoreCase(Strings2)//(不区分大小写)
StringtoLowerCase()//将字符串所有大写字母转换为小写
StringtoUpperCase()//将字符串所有小写字母转换为大写
字符串类-String
Stringsubstring(intbeginIndex)//取子串,返回当前串中从下标beginIndex开始到串尾的字串。
String