JavaSE基础教程.docx

上传人:b****6 文档编号:8854205 上传时间:2023-02-02 格式:DOCX 页数:69 大小:51.76KB
下载 相关 举报
JavaSE基础教程.docx_第1页
第1页 / 共69页
JavaSE基础教程.docx_第2页
第2页 / 共69页
JavaSE基础教程.docx_第3页
第3页 / 共69页
JavaSE基础教程.docx_第4页
第4页 / 共69页
JavaSE基础教程.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

JavaSE基础教程.docx

《JavaSE基础教程.docx》由会员分享,可在线阅读,更多相关《JavaSE基础教程.docx(69页珍藏版)》请在冰豆网上搜索。

JavaSE基础教程.docx

JavaSE基础教程

JavaSE

一、java语言概述

1.软件:

系统软件vs应用软件

2.人与计算机做交互:

使用计算机语言。

图形化界面vs命令行方式dirmdrdcdcd..cd/delexit

3.语言的分类:

第一代:

机器语言第二代:

汇编语言第三代:

高级语言(面向过程---面向对象)

4.java语言的特性:

①面向对象性②健壮性③跨平台性(writeonce,runanywhere)---JVM

5.安装JDK及配置path环境变量

1)傻瓜式安装JDK。

2)path:

window操作系统在执行命令时所要搜寻的路径。

我们需要将jdk中bin目录所在的路径:

D:

\Java\jdk1.7.0_07\bin保存在path环境变量下。

3)测试:

在命令行窗口,任意的文件目录下,执行javac.exe或者java.exe都可以调用成功。

>河床好比操作底层,jdk好比是河水,java应用程序好比是船。

注意:

JDKJREJVM

6.如何编写并运行第一个java程序

【过程】编写----编译----运行

1)编写:

每一个java文件都是.java结尾的,称为源文件【HelloWorld.java】。

java程序就存在于源文件中

publicclassHelloWorld{

//程序的主方法,是程序的入口

publicstaticvoidmain(Stringargs[]){

//要执行的代码

System.out.println("HelloWorld");

}

}

注意点:

Java源文件以“java”为扩展名。

源文件的基本组成部分是类(class),如本类中的HelloWorld类。

一个源文件中最多只能有一个public类。

其它类的个数不限,如果源文件包含一个public类,则文件名必须按该类名命名。

Java应用程序的执行入口是main()方法。

它有固定的书写格式:

publicstaticvoidmain(String[]args){...}

Java语言严格区分大小写。

Java方法由一条条语句构成,每个语句以“;”结束。

大括号都是成对出现的,缺一不可。

2)编译:

在源文件所在的目录下,执行javac.exe源文件名.java;生成诸多个.class结尾的字节码文件

3)运行:

生成的字节码文件通过java.exe解释执行

7.会调试程序中出现的问题

8.注释:

①单行注释//②多行注释/**/(多行注释不能够嵌套)

③文档注释/***/javadoc-d文件目录名-author-version源文件名.java;

9.JDK提供的关于旗下所有的包、类的文档:

API

二、基本语法

(一)关键字&标识符

关键字:

被Java语言赋予了特殊含义,用做专门用途的字符串(单词)

保留字:

标识符:

凡是自己可以起名字的地方都叫标识符

 

命名的规则:

(一定要遵守,不遵守就会报编译的错误)

由26个英文字母大小写,0-9,_或$组成

数字不可以开头。

不可以使用关键字和保留字,但能包含关键字和保留字。

Java中严格区分大小写,长度无限制。

标识符不能包含空格。

Java中的名称命名规范:

(不遵守,也不会出现编译的错误)

包名:

多单词组成时所有字母都小写:

xxxyyyzzz

类名、接口名:

多单词组成时,所有单词的首字母大写:

XxxYyyZzz

变量名、方法名:

多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:

xxxYyyZzz

常量名:

所有字母都大写。

多单词时每个单词用下划线连接:

XXX_YYY_ZZZ

(二)变量

1.java中变量按照数据类型来分类:

基本数据类型vs引用数据类型(数组类接口)

>基本数据类型:

整型:

byte(8bit)shortint(默认类型)long

浮点型:

floatdouble(默认类型)

字符型:

char(‘’)

布尔类型:

boolean(只能取值为true或false,不能取null)

补充:

按照在类中存在的位置的不同:

成员变量vs局部变量

2.进制(了解)

十进制二进制八进制十六进制

二进制:

计算机底层都是用二进制来存储、运算。

>二进制与十进制之间的转换。

>二进制在底层存储:

正数、负数都是以补码的形式存储的。

(原码、反码、补码)

>四种进制间的转换

3.变量的运算:

①自动类型转换:

容量小的数据类型自动转换为容量大的数据类型。

shorts=12;

inti=s+2;

注意:

byteshortchar之间做运算,结果为int型!

②强制类型转换:

是①的逆过程。

使用“()”实现强转。

(三)运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

算术运算符:

+-+-*/%++--+

注意:

1)/:

inti=12;i=i/5;

2)%:

最后的符号只跟被模数相同

3)前++:

先+1,后运算后++:

先运算,后+1

4)+:

String字符串与其他数据类型只能做连接运算,且结果为String类型。

sysout('*'+'\t'+'*');vssysout("*"+'\t'+'*');

赋值运算符:

=+=-=*=/=%=

inti=12;

i=i*5;

i*=5;//与上一行代码同样的意思

【特别地】

shorts=10;

s=s+5;//报编译的异常

s=(short)(s+5);

s+=5;//s=s+5,但是结果不会改变s的数据类型。

 

比较运算符(关系运算符)

==><>=<=instanceof

【注意】区分==与=区别。

进行比较运算操作以后,返回一个boolean类型的值

4>=3表达的是4>3或者4=3.结果是true。

if(i>1&&i<10){}

不能写为:

if(1

逻辑运算符(运算符的两端是boolean值)

&&&|||^!

【注意】区分&与&&的区别,以及|与||的区别

我们使用的时候,选择&&,||

位运算符(两端是数值类型的数据)

<<>>>>>&|^~

【例子】1.如何交换m=12和n=5的值

2.将60转换为十六进制输出。

三元运算符

(条件表达式)?

表达式1:

表达式2;

1)既然是运算符,一定会返回一个结果,并且结果的数据类型与表达式1,2的类型一致

2)表达式1与表达式2的数据类型一致。

3)使用三元运算符的,一定可以转换为if-else。

反之不一定成立。

例子:

获取两个数的较大值;获取三个数的最大值。

(四)流程控制

1.顺序结构

>程序从上往下的顺序执行

2.分支结构:

if-else

switch-case

3.循环结构:

while(){}

do{}while()

for(;;){}

4.1分支结构

1.条件判断:

①if(条件表达式){}

②if(条件表达式){

//执行的语句1;

}else{

//执行的语句2;

}

③if(条件表达式1){

//执行的语句1;

}elseif(条件表达式2){

//执行的语句2;

}elseif(条件表达式3){

//执行的语句3;

}...

}else{

//执行的语句;

}

【注意】

1.一旦满足某个条件表达式,则进入其执行语句块执行,执行完毕,跳出当前的条件判断结构,不会执行其以下的条件结构语句。

2.如果诸多个条件表达式之间为“互斥”关系,多个结构可以上下调换顺序

如果诸多个条件表达式之间为“包含”关系,要求条件表达式范围小的写在范围大的上面。

2.选择结构

switch(变量){

case值1:

//break;

case值2:

//break;

...

default:

break;

}

【注意】

1.变量可以为如下的数据类型:

byteshortintchar枚举String

2.case后只能填写变量的值,不能写范围。

3.default是可以省略的。

并且其位置也是灵活的,但是通常将其放在case语句之后。

4.一旦满足某个case语句,则进入执行其操作。

直至遇到break或者程序终止。

5.若要判断的语句的条件满足switch变量的数据类型,且值不多的情况下,建议选择switch-case.

除此之外,选择if-else.

4.2循环结构

1.格式:

①初始化条件

②循环条件

③迭代部分

④循环体

 

for(①;②;③){

}

while(②){

}

do{

}while(②);

注:

1.不同的循环结构之间可以相互转换

2.while和do-while的区别:

do-while程序至少会执行一次

2.嵌套循环:

循环结构还可以声明循环。

让内层循环结构整体充当外层循环的循环体。

若外层循环执行m次,内层循环执行n次,整个程序执行m*n次。

【题目】

******

******

******

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

for(intj=0;j<6;j++){

System.out.print("*");

}

System.out.println();

}

说明:

外层循环控制行数,内层循环控制列数

【例题】1.九九乘法表2.输出100内的质数。

(两种)

 

3.无限循环结构

for(;;){

...

if(){

break;

}

...

}

或者

while(true){

...

if(){

break;

}

...

}

往往我们在无限循环结构内部提供循环的终止条件,使用break关键字。

否则,此循环将无限制的执行下去,形成死循环!

死循环是我们要避免的。

4.3break&continue

break:

>使用switch-case结构或者循环结构中

>在循环结构中,一旦执行到break,就跳出当前循环。

continue:

使用在循环结构中

>一旦执行到continue,就跳出当次循环。

 

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

if(i%4==0){

//break;//123

continue;//123567910

}

System.out.print(i);

}

 

在嵌套循环中,使用带标签的break和continue。

label:

for(inti=1;i<5;i++){

for(intj=1;j<=10;j++){

if(j%4==0){

//break;

//continue;

//breaklabel;

continuelabel;

}

System.out.print(j);

}

System.out.println();

}

(五)数组

二维数组

数组的常见异常

//1.数组下标越界的异常:

java.lang.ArrayIndexOutOfBoundsException

int[]i=newint[10];

//i[0]=90;

//i[10]=99;

//for(intm=0;m<=i.length;m++){

//System.out.println(i[m]);

//}

//2.空指针的异常:

NullPointerException

//第一种:

//boolean[]b=newboolean[3];

//b=null;

//System.out.println(b[0]);

//第二种:

//String[]str=newString[4];

////str[3]=newString("AA");//str[3]="AA";

//System.out.println(str[3].toString());

//第三种:

int[][]j=newint[3][];

j[2][0]=12;

数组的常用的算法问题

1.求数组元素的最大值、最小值、和、平均数

2.数组的复制和反转

情况1:

 

情况2:

(如何实现复制)

 

数组的反转:

//数组元素的反转

//for(inti=0;i

//inttemp=arr[i];

//arr[i]=arr[arr.length-1-i];

//arr[arr.length-1-i]=temp;

//}

for(intx=0,y=arr.length-1;x

inttemp=arr[x];

arr[x]=arr[y];

arr[y]=temp;

}

拓展:

Stringstr="abcdefg";

数组的排序:

插入排序

直接插入排序、折半插入排序、Shell排序

交换排序

冒泡排序、快速排序(或分区交换排序)

选择排序

简单选择排序、堆排序

归并排序

基数排序

 

//使用冒泡排序使数组元素从小到大排列

//for(inti=0;i

//for(intj=0;j

//if(arr[j]>arr[j+1]){

//inttemp=arr[j];

//arr[j]=arr[j+1];

//arr[j+1]=temp;

//}

//}

//}

////使用直接选择排序使数组元素从小到大排列

//for(inti=0;i

//intt=i;//默认i处是最小的

//for(intj=i;j

////一旦在i后发现存在比其小的元素,就记录那个元素的下角标

//if(arr[t]>arr[j]){

//t=j;

//}

//}

//if(t!

=i){

//inttemp=arr[t];

//arr[t]=arr[i];

//arr[i]=temp;

//}

//}

还可以调用:

Arrays工具类:

Arrays.sort(arr);

三、面向对象

(一)

1.类及对象

1.关于于类的设计

2.类的组成成分:

1)属性(成员变量,Field)

2)方法(成员方法,函数,Method)

2.1属性:

*成员变量vs局部变量

*相同点:

1.遵循变量声明的格式:

数据类型变量名=初始化值

*2.都有作用域

*不同点:

1.声明的位置的不同:

成员变量:

声明在类里,方法外

*局部变量:

声明在方法内,方法的形参部分,代码块内

*2.成员变量的修饰符有四个:

publicprivateprotected缺省

*局部变量没有修饰符,与所在的方法修饰符相同。

*3.初始化值:

一定会有初始化值。

*成员变量:

如果在声明的时候,不显式的赋值,那么不同数据类型会有不同的默认初始化值。

*byteshortintlong==>0

*floatdouble==>0.0

*char==>空格

*boolean==>false

*引用类型变量==>null

*局部变量:

一定要显式的赋值。

(局部变量没有默认初始化值)

*4.二者在内存中存放的位置不同:

成员变量存在于堆空间中;局部变量:

栈空间中

*

*总结:

关于变量的分类:

1)按照数据类型的不同:

基本数据类型(8种)&引用数据类型

*2)按照声明的位置的不同:

成员变量&局部变量

2.2方法:

提供某种功能的实现

*1)实例:

publicvoideat(){//方法体}

*publicStringgetName(){}

*publicvoidsetName(Stringn){}

*格式:

权限修饰符返回值类型(void:

无返回值/具体的返回值)方法名(形参){}

*

*2)关于返回值类型:

void:

表明此方法不需要返回值

*有返回值的方法:

在方法的最后一定有return+返回值类型对应的变量

*记忆:

void与return不可以同时出现一个方法内。

像一对“冤家”。

*

*3)方法内可以调用本类的其他方法或属性,但是不能在方法内再定义方法!

 

3.面向对象编程的思想的落地法则一:

1)设计并创建类及类的成分

2)实例化类的对象

3)通过“对象.属性”或"对象.方法"的形式完成某项功能

4.类的初始化的内存解析

4.1内存划分的结构:

栈(stack):

局部变量、对象的引用名、数组的引用名

堆(heap):

new出来的“东西”(如:

对象的实体,数组的实体),含成员变量

方法区:

含字符串常量

静态域:

声明为static的变量

4.2理解的基础上,学会基本的创建的类的对象在内存中的运行。

 

2.方法的重载

*方法的重载(overload)

*要求:

1.同一个类中2.方法名必须相同3.方法的参数列表不同(①参数的个数不同②参数类型不同)

*补充:

方法的重载与方法的返回值类型没有关系!

//如下的四个方法构成重载

//定义两个int型变量的和

publicintgetSum(inti,intj){

returni+j;

}

//定义三个int型变量的和

publicintgetSum(inti,intj,intk){

returni+j+k;

}

//定义两个double型数据的和

publicdoublegetSum(doubled1,doubled2){

returnd1+d2;

}

//定义三个double型数组的和

publicvoidgetSum(doubled1,doubled2,doubled3){

System.out.println(d1+d2+d3);

}

//不能与如上的几个方法构成重载

//publicintgetSum1(inti,intj,intk){

//returni+j+k;

//}

//publicvoidgetSum(inti,intj,intk){

//System.out.println(i+j+k);

//}

 

//以下的两个方法构成重载。

publicvoidmethod1(inti,Stringstr){

}

publicvoidmethod1(Stringstr1,intj){

}

3.可变个数的形参的方法

*可变个数的形参的方法:

*1.格式:

对于方法的形参:

数据类型...形参名

*2.可变个数的形参的方法与同名的方法之间构成重载

*3.可变个数的形参在调用时,个数从0开始,到无穷多个都可以。

*4.使用可变多个形参的方法与方法的形参使用数组是一致的。

*5.若方法中存在可变个数的形参,那么一定要声明在方法形参的最后。

*6.在一个方法中,最多声明一个可变个数的形参。

 

//如下四个方法构成重载

//在类中一旦定义了重载的可变个数的形参的方法以后,如下的两个方法可以省略

//publicvoidsayHello(){

//System.out.println("helloworld!

");

//}

//publicvoidsayHello(Stringstr1){

//System.out.println("hello"+str1);

//}

//可变个数的形参的方法

publicvoidsayHello(String...args){

for(inti=0;i

System.out.println(args[i]+"$");

}

//System.out.println("=====");

}

publicvoidsayHello(inti,String...args){

//publicvoidsayHello(String...args,inti){

System.out.println(i);

for(intj=0;j

System.out.println(args[j]+"$");

}

}

publicvoidsayHello1(String[]args){

for(inti=0;i

System.out.println(args[i]);

}

}

4.java的值传递机制

重点、难点

 

*方法的参数传递(重点、难点)

*1.形参:

方法声明时,方法小括号内的参数

*实参:

调用方法时,实际传入的参数的值

*

*2.规则:

java中的参数传递机制:

值传递机制

*1)形参是基本数据类型的:

将实参的值传递给形参的基本数据类型的变量

*2)形参是引用数据类型的:

将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量。

【典型例题1】

publicstaticvoidmain(String[]args){

TestArgsTransfertt=newTestArgsTransfer();

inti=10;

intj=5;

System.out.println("i:

"+i+"j:

"+j);//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1