05_Java基础(方法)_讲义
- 格式:doc
- 大小:148.50 KB
- 文档页数:15
Java语言程序设计_基础篇_中文ppt_第五章第5章方法Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807开放问题分别求出1到10、20到30、35到45的整数和。
Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807问题intum=0;for(inti=1;i<=10;i++)um+=i;Sytem.out.println("Sumfrom1to 10i"+um);um=0;for(inti=20;i<=30;i++)um+=i;Sytem.out.println("Sum from20to30i"+um);um=0;for(inti=35;i<=45;i++)um+=i;Sytem.out.prin tln("Sumfrom35to45i"+um);Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807问题intum=0;for(inti=1;i<=10;i++)um+=i;Sytem.out.println("Sumfrom1to 10i"+um);um=0;for(inti=20;i<=30;i++)um+=i;Sytem.out.println("Sum from20to30i"+um);um=0;for(inti=35;i<=45;i++)um+=i;Sytem.out.prin tln("Sumfrom35to45i"+um);Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807解决方案publictaticintum(inti1,inti2){intum=0;for(inti=i1;i<=i2;i++)um+ =i;returnum;}publictaticvoidmain(String[]arg){Sytem.out.println("Sumfrom1to10i"+um(1,10));Sytem.out.println("Sumfrom20to30i"+u m(20,30));Sytem.out.println("Sumfrom35to45i"+um(35,45));}Liang, IntroductiontoJavaProgramming,EighthEdition,(c)2022PearonEducat ion,Inc.Allrightreerved.0132130807学习目标定义方法、调用方法以及传参数给方法(第5.2-5.5节)。
第一讲 Java语言入门1.1 Java的特点1.1.1面向对象:∙与C++相比,JAVA是纯的面向对象的语言C++为了向下兼容C,保留了很多C里面的特性,而C,众所周知是面向过程的语言,这就使C++成为一个"混血儿"。
而JAVA语法中取消了C++里为兼容C所保留的特性,如取消了头文件、指针算法、结构、单元等。
1.1.2可移植(平台无关性):∙生成中间字节码指令与其他编程语言不同,Java并不生成可执行文件(.exe文件),而是生成一种中间字节码文件(.class文件)。
任何操作系统,只要装有Java 虚拟机(JVM),就可以解释并执行这个中间字节码文件。
这正是Java实现可移植的机制。
∙原始数据类型存储方法固定,避开移植时的问题Java的原始数据类型的大小是固定的。
比如,在任何机器上,整型都是32位,而C++里整型是依赖于目标机器的,对16位处理器(比如8086),整数用两个字节表示;在像Sun SPARC这样的32位处理器中,整数用4个字节表示。
在Intel Pentium处理器上,整数类型由具体的操作系统决定:对于DOS和Win32来说,整数是2个字节;对于Windows 9x 、NT和2000,整数是4个字节。
当然,使整数类型平台无关之后,性能必然有所下降,但就Java来说,这个代价是值得的。
Java的字符串,则采用标准的Unicode格式保存。
可以说,没有这个特性,Java的可移植性也不可能实现。
1.1.3简单∙JAVA在语法上与C++类似JAVA的语法与C++很接近,有过C或者C++编程经验的程序员很容易就可以学会JAVA语法;∙取消了C++的一些复杂而低效的特性比如:用接口技术代替了C++的多重继承。
C++中,一个类允许有多个超类,这个特性叫做"多重继承",多重继承使得编译器非常复杂且效率不高;JAVA的类只允许有一个超类,而用接口(Interface)技术实现与C++的多继承相类似的功能其它被取消的特性包括:虚拟基础类、运算符过载等∙JAVA的基本解释器和类支持模块大概仅40K即使加入基本的标准库和支持线程的模块,也才220K左右。
JAVA基础课程讲义-图文北京尚学堂科技JAVA基础课程北京尚学堂科技JAVA基础课程目录第一章JAVA入门............................................................. . (10)计算机语言发展史............................................................. . (10)JAVA开发环境搭建............................................................. ...........................................18一个典型的JAVA程序的编写和运行过程............................................................. ......19第一个程序常见错误............................................................. ........................................20第一个JAVA程序的总结和提升............................................................. ......................20常用Java开发工具............................................................. ...................................................20常用do命令............................................................. (21)本章笔试作业............................................................. (21)本章上机操作............................................................. (21)第二章(1)编程的基本概念............................................................. (22)注释............................................................. ............................................................... .............22标识符............................................................. ............................................................... .........22关键字/保留字............................................................. ..........................................................23变量(variable)..................................................... ............................................................... .....24常量(Contant)...................................................... ............................................................... ...25命名规则(规范)............................................................ ..........................................................25基本数据类型(primitivedatatype)............................................ . (26)整型变量............................................................. (26)浮点型............................................................. ................................................................27字符型(2个字节):......................................................... .........................................28boolean类型............................................................. .....................................................29运算符(operator)..................................................... (29)二元运算符.............................................................. .......................................................29一元运算符.............................................................. .......................................................30布尔逻辑表达符.............................................................. .. (30)2北京尚学堂科技JAVA基础课程位运算符............................................................. (30)扩展运算符............................................................. ........................................................31字符串连接符............................................................. ....................................................31三目条件运算符............................................................. ................................................31运算符优先级的问题............................................................. ........................................31自动类型转换............................................................. ....................................................32基本类型转化时常见错误和问题............................................................. ....................33方法............................................................. ............................................................... .............33简单的键盘输入和输出............................................................. ............................................33本章思考作业............................................................. (34)上机操作............................................................. ............................................................... .....34第二章(2)控制语句............................................................. (35)顺序结构............................................................. ............................................................... .....35选择结构............................................................. ............................................................... .. (35)if单选择结构............................................................. .....................................................35if-ele双选择结构............................................................. .............................................35If-eleif-ele多选择结构............................................................. ...................................36witch多选择结构............................................................. ............................................37循环结构............................................................. ............................................................... .. (39)While和dowhile的区别............................................................. ..................................41For循环............................................................. . (42)break语句和continue语句............................................................. .............................47语句块............................................................. ............................................................... .........48递归结构............................................................. ............................................................... .....49本章作业............................................................. ............................................................... .....50本章上机操作............................................................. (51)第三章JAVA面向对象程序开发............................................................. . (52)编程语言发展史............................................................. ........................................................52类和对象是如何产生发展的如何进化的............................................................. ............52面向对象思想初步(OOP初步ObjectOrientedProgramming)..................................... ........53面向对象编程的语言的三大特征简介............................................................. ....................56对象和类的概念............................................................. ........................................................56类和对象初步............................................................. (57)测试类的定义方式............................................................. ............................................57简单的学生类编写示例............................................................. ....................................58内存分析............................................................. (59)属性(field,或者叫成员变量)........................................................... .......................59引用类型............................................................. (60)类的方 (60)对象的创建和使用............................................................. ............................................60构造器(或者叫做构造方法,contructor)................................................. ......................60垃圾回收机制(GarbageCollection)............................................ ........................................63方法的重载(overload),构造方法的重载............................................................. ...............63thi关键字............................................................. ............................................................... ..653北京尚学堂科技JAVA基础课程tatic关键字.............................................................. (66)静态初始化块(经常用来初始化类,加载类信息时执行!)...........................................67package...... ................................................................ .............................................................68J DK中的主要包.............................................................. ........................................................68import................................................................ .....68eclipe的使用.............................................................. ..........................................................69继承(e某tend,inheritance)............................................... .. (70)为什么需要继承?继承的作用?........................................................... ......................70继承介绍............................................................. (70)如何实现继承?........................................................... ..................................................70继承使用要点............................................................. ....................................................71Object 类............................................................. ............................................................... .. (72)toString方法............................................................. ......................................................72equal方法............................................................. ........................................................73uper 关键字............................................................. . (74)方法的重写(override)................................................... ....................................................74隐藏/封装(encapulation)................................................. .. (75)为什么需要封装?封装的作用和含义?........................................................... ..........75使用访问控制符,实现封装............................................................. ............................76封装的使用细节............................................................. ................................................76多态(polymorphim).................................................. . (76)为什么需要多态............................................................. ..............................................76如何实现多态............................................................. ..................................................77方法绑定(methodbinding)................................................ .........................................77静态绑定............................................................. (77)动态绑定............................................................. (77)多态的使用要点............................................................. ................................................78对象的转型(cating)....................................................... ........................................................79final ............................................................... ..........................................................................81抽象类............................................................. ............................................................... .........82抽象类的使用要点............................................................. ....................................................83接口............................................................. ............................................................... . (83)为什么需要接口............................................................. ..............................................84如何定义接口............................................................. ..................................................84接口的本质探讨............................................................. ................................................84接口使用要点............................................................. ....................................................85接口的多继承............................................................. ....................................................86面向接口编程............................................................. ....................................................87OOP更多应用............................................................. .. (87)组合............................................................. ............................................................... .....87内部类(innerclae).......................................................................................................88字符串(ng.String类)的使用............................................................. ..............90字符串相等的判断............................................................. ............................................92思考作业............................................................. ............................................................... .. (93)4北京尚学堂科技JAVA基础课程上机作业............................................................. ............................................................... .....94第四章异常机制............................................................. ............................................................... .95导引问题............................................................. ............................................................... .....95异常(E某ception)的概念............................................................. ........................................96异常分类............................................................. ............................................................... .. (96)Error.......................................................... ............................................................... .......97Error和E某ception的区 (97)E某ception........................................................ ............................................................... ..97异常的处理办法之一,捕获异常............................................................. . (99)try 块............................................................. ............................................................... ...99catch..................................................... ............................................................... ............99finally.......................................... ............................................................... ....................100try,catch,finally,return执行顺序............................................................. ..................100异常的处理办法之二,声明异常:throw子句............................................................. 101方法重写中声明异常原则............................................................. ......................................102异常的处理办法之三,手动抛出异常,throw子句........................................................103自定义异常............................................................. .. (1)03使用异常机制建议............................................................. ..................................................104总结........................................................................105思考作业............................................................. ............................................................... ...105上机作业............................................................. ............................................................... ...105第五章数组............................................................. ............................................................... . (106)数组概述和特点............................................................. ......................................................106创建数组和初始化............................................................. ..................................................106数组常见操作............................................................. . (108)数组的拷贝............................................................. ......................................................108数组排序............................................................. ..........................................................109多维数组............................................................. ............................................................... ...110附录(面试前复习一下!!)........................................................ (111)冒泡排序.............................................................分法查找............................................................. ......................................................112命令行参数的问题............................................................. ..........................................113增强for循环............................................................. ...................................................114思考作业............................................................. ............................................................... ...114上机作业............................................................. ............................................................... ...115第六章常用类的使用............................................................. (117)基本数据类型的包装类............................................................. (117)包装类基本知识.............................................................. .............................................117包装类的用途.............................................................. .................................................118自动装箱和拆箱?autobo某ing,unbo某ing............................................................. .....119字符串相关类(String、StringBuffer、StringBuilder) (12)String类的常用方法(已讲过,不再讲!)......................................................... .....120StringBuffer和StringBuilder.................................................. ......................................121String和StringBuffer 和StringBuilder使用要点.. (123)5北京尚学堂科技JAVA基础课程时间处理相关类............................................................. (124)Date时间类(java.util.Date)............................................... ...........................................124DateFormat类和SimpleDateFormat 类............................................................. .........125Calendar日历类............................................................. ..............................................126可视化日历的编写............................................................. ..........................................128Math 类............................................................. ............................................................... .....131File 类............................................................. ............................................................... .. (132)为什么需要学习IO技术............................................................. ........................................146基本概念............................................................. ............................................................... (146)数据源.............................................................. . (146)流的概念.............................................................. .........................................................146第一个简单的IO流程序及深入(将文件中的数据读入).............................................146Java中流的概念细分.............................................................. .............................................148Java中IO流类的体系.............................................................. ...........................................149四个IO基本抽象类.............................................................. .. (150)InputStream.................................................... .. (1)50OutputStream................................................. .. (1)50常用InputStream和OutputStream子类用法 (1)50FileInputStream和FileOutputStream............................................... ...........................150ByteArrayInutStream和ByteArrayOutputStream.......................................... ..........154BufferedInputStream和BufferedOutputStream........................................... ...............156DataInputStream和DataOutputStream............................................... .......................157ObjectInputStream和ObjectOutputStream............................................. ...................158PrintStream.............................. ............................................................... . (158)6北京尚学堂科技JAVA基础课程Reader......................................................... ............................................................... ...158Writer................................................... ............................................................... ..........159FileReader和FileWriter..................................................... ..........................................159BufferReader和BufferWriter................................................... ....................................159InputStreamReader和OutputStreamWriter............................................. ...................161JAVA对象的序列化和反序列化............................................................. .. (161)为什么需要序列化和反序列化...................................................................................161对象的序列化主要有两种用途............................................................. ......................161序列化涉及的类和接口............................................................. ..................................162序列化/反序列化的步骤和实例............................................................. ....................162综合的序列化和反序列化练习............................................................. ......................163JAVA.IO包相关流对象用法总结(尚学堂1002班王鑫).....................................................165IO中其他常用类............................................................. .. (165)File 类............................................................. ............................................................... 165RandomAcceFile.............................................. .. (166)思考作业............................................................. ............................................................... ...166上机作业............................................................. ............................................................... ...166提高课外作业............................................................. ..........................................................166第九章多线程技术............................................................. . (167)念............................................................. ............................................................... (167)程序............................................................. ............................................................... ...167进程............................................................. ............................................................... ...167线程............................................................. ............................................................... ...167线程和进程的区别............................................................. ..........................................167进程与程序的区别............................................................. ..........................................168JAVA中如何实现多线程(重点!!)........................................................ .. (168)通过继承Thread类实现多线程.............................................................. ....................168通过Runnable接口实现多线程.............................................................. ...................169线程状态和leep/yield/join/top/detroy方法.............................................................. (170)态............................................................. ..........................................................170就绪状态............................................................. ..........................................................170运行状态............................................................. ..........................................................170死亡状态............................................................. ..........................................................170终止线程的典型方法(重要!!!)...................................................... .......................171阻塞状态(leep/yield/join方法)............................................................ ......................171线程基本信息和优先级别............................................................. ......................................173线程同步和死锁问题............................................................. ..............................................175死锁及解决方案............................................................. ......................................................179生产者/消费者模式............................................................. ................................................181线程回顾总结............................................................. ..........................................................184任务调度(补充内容,了解即可!).......................................................... ..........................184思考作业............................................................. ..................................................................185上机作业............................................................. ............................................................... ...185第十章网络编程............................................................. .. (1)867北京尚学堂科技JAVA基础课程基本概念............................................................. ............................................................... (186)什么是计算机网络............................................................. ..........................................186计算机网络的主要功能............................................................. ..................................186什么是网络通信协议............................................................. ......................................186网络通信接口............................................................. ..................................................186为什么要分层............................................................. ..................................................186通信协议的分层规定............................................................. ......................................186数据封装............................................................. ..........................................................188数据拆封.......................................................................................................................188IP ............................................................... ............................................................... .. (188)端口............................................................. ............................................................... ...188URL...................................................... ............................................................... .. (189)TCP协议和UDP协议............................................................. (189)区别.............................................................. ................................................................ .189TCP协议.............................................................. ..........................................................189UDP 协议.............................................................. .........................................................190JAVA 网络编程.............................................................. .. (190)InetAddre...................................................... . (19)0InetSocketAddre............................................... .........................................................191URL 类............................................................. .. (1)91基于TCP协议的SOCKET编程和通信............................................................. ...........193UDP通讯的实现............................................................. ..............................................201思考作业............................................................. ............................................................... ...203上机作业(分组完成,3人一组,周末完成)........................................................... .....204第十一章JAVA多媒体编程............................................................. . (205)字体............................................................. ............................................................... .. (205)字体示例和效果............................................................. ..............................................205颜色............................................................. ............................................................... .. (206)颜色编程示例............................................................. ..................................................206图形绘制............................................................. ............................................................... (206)。
Java基础语法今日内容介绍◆方法第1章方法1.1方法概述在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法。
如:小明同学在路边准备坐车来学校学习。
这就面临着一件事情(坐车到学校这件事情)需要解决,解决办法呢?可采用坐公交车或坐出租车的方式来学校,那么,这种解决某件事情的办法,我们就称为方法。
在java中,方法就是用来完成解决某件事情或实现某个功能的办法。
方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或计算数值。
我们可以通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法。
方法,一般都有一个返回值,用来作为事情的处理结果。
1.2方法的语法格式在Java中,声明一个方法的具体语法格式如下:修饰符返回值类型方法名(参数类型参数名1,参数类型参数名2,......){执行语句………return 返回值;}对于上面的语法格式中具体说明如下:●修饰符:方法的修饰符比较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等,这些修饰符在后面的学习过程中会逐步介绍●返回值类型:用于限定方法返回值的数据类型●参数类型:用于限定调用方法时传入参数的数据类型●参数名:是一个变量,用于接收调用方法时传入的数据●return关键字:用于结束方法以及返回方法指定类型的值●返回值:被return语句返回的值,该值会返回给调用者需要特别注意的是,方法中的“参数类型参数名1,参数类型参数名2”被称作参数列表,它用于描述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。
方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。
接下来通过一个案例来演示方法的定义与使用,如下图所示。
MethodDemo01.javapublic class MethodDemo01 {public static void main(String[] args) {int area = getArea(3, 5); // 调用 getArea方法System.out.println(" The area is " + area);}// 下面定义了一个求矩形面积的方法,接收两个参数,其中x为高,y为宽public static int getArea(int x, int y) {int temp = x * y; // 使用变量temp记住运算结果return temp; // 将变量temp的值返回}}运行结果如下图所示。
图1-1运行结果在上述代码中,定义了一个getArea()方法用于求矩形的面积,参数x和y分别用于接收调用方法时传入的高和宽,return语句用于返回计算所得的面积。
在main()方法中通过调用getArea()方法,获得矩形的面积,并将结果打印。
1.3方法调用图解接下来通过一个图例演示getArea()方法的整个调用过程,如下图所示。
图1-2getArea()方法的调用过程从上图中可以看出,在程序运行期间,参数x和y相当于在内存中定义的两个变量。
当调用getArea()方法时,传入的参数3和5分别赋值给变量x和y,并将x*y的结果通过return语句返回,整个方法的调用过程结束,变量x和y被释放。
1.4方法定义练习分别定义如下方法:定义无返回值无参数方法,如打印3行,每行3个*号的矩形定义有返回值无参数方法,如键盘录入得到一个整数定义无返回值有参数方法,如打印指定M行,每行N个*号的矩形定义有返回值有参数方法,如求三个数的平均值●无返回值无参数方法,如打印3行,每行3个*号的矩形public static void printRect(){//打印3行星for (int i=0; i<3; i++) {//System.out.println("***"); 相当于是打印3颗星,换行//每行打印3颗星for (int j=0; j<3; j++) {System.out.print("*"); // ***}System.out.println();}}●有返回值无参数方法,如键盘录入得到一个整数public static int getNumber(){Scanner sc = new Scanner(System.in);int number = sc.nextInt();return number;}●无返回值有参数方法,如打印指定M行,每行N个*号的矩形public static void printRect2(int m, int n){//打印M行星for (int i=0; i<m; i++) {//每行中打印N颗星for (int j=0; j<n; j++) {System.out.print("*");}System.out.println();}}●有返回值有参数方法,如求三个数的平均值public static double getAvg(double a, double b, double c) {double result = (a+b+c)/3;return result;}1.5方法的重载我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。
接下来通过一个案例来实现对两个整数相加、对三个整数相加以及对两个小数相加的功能,具体实现如下所示。
MethodDemo02.javapublic class MethodDemo02 {public static void main(String[] args) {// 下面是针对求和方法的调用int sum1 = add01(1, 2);int sum2 = add02(1, 2, 3);double sum3 = add03(1.2, 2.3);// 下面的代码是打印求和的结果System.out.println("sum1=" + sum1);System.out.println("sum2=" + sum2);System.out.println("sum3=" + sum3);}// 下面的方法实现了两个整数相加public static int add01(int x, int y) {return x + y;}// 下面的方法实现了三个整数相加public static int add02(int x, int y, int z) {return x + y + z;}// 下面的方法实现了两个小数相加public static double add03(double x, double y) {return x + y;}}运行结果如下图所示。
图1-3运行结果从上述代码不难看出,程序需要针对每一种求和的情况都定义一个方法,如果每个方法的名称都不相同,在调用时就很难分清哪种情况该调用哪个方法。
为了解决这个问题,Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。
下面的三个方法互为重载关系●public static int add(int x,int y) {逻辑} //两个整数加法●public static int add(int x,int y,int z) {逻辑} //三个整数加法●public static int add(double x,double y) {逻辑} //两个小数加法接下来通过方法重载的方式进行修改,如下所示。
MethodDemo03.javapublic class MethodDemo03 {public static void main(String[] args) {// 下面是针对求和方法的调用int sum1 = add(1, 2);int sum2 = add(1, 2, 3);double sum3 = add(1.2, 2.3);// 下面的代码是打印求和的结果System.out.println("sum1=" + sum1);System.out.println("sum2=" + sum2);System.out.println("sum3=" + sum3);}// 下面的方法实现了两个整数相加public static int add(int x, int y) {return x + y;}// 下面的方法实现了三个整数相加public static int add(int x, int y, int z) {return x + y + z;}// 下面的方法实现了两个小数相加public static double add(double x, double y) {return x + y;}}MethodDemo02.java的运行结果和MethodDemo03.java一样,如下图所示。
图1-4运行结果上述代码中定义了三个同名的add()方法,它们的参数个数或类型不同,从而形成了方法的重载。
在main()方法中调用add()方法时,通过传入不同的参数便可以确定调用哪个重载的方法,如add(1,2)调用的是两个整数求和的方法。
值得注意的是,方法的重载与返回值类型无关,它只有两个条件,一是方法名相同,二是参数个数或参数类型不相同。
1.5.1重载的注意事项●重载方法参数必须不同:参数个数不同,如method(int x)与method(int x,int y)不同参数类型不同,如method(int x)与method(double x)不同g参数顺序不同,如method(int x,double y)与method(double x,int y)不同●重载只与方法名与参数类型相关与返回值无关如void method(int x)与int method(int y)不是方法重载,不能同时存在●重载与具体的变量标识符无关如method(int x)与method(int y)不是方法重载,不能同时存在1.5.2参数传递参数传递,可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。
这种传递方式,我们称为参数传递。