【119天】尚学堂高琪Java300集视频精华笔记(24-30)
第24集:方法/方法的本质/形参/实参/return语句
-
Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,声明格式:
[修饰符1 修饰符2 …] 返回值类型 方法名(形式参数列表){ Java语句;… … … }
形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返还给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配。
return 语句终止方法的运行并指定要返回的数据。
Java中进行方法调用中传递参数时,遵循值传递的原则:基本类型传递的是该数据值本身。引用类型传递的是对对象的引用【即对象的地址】,而不是对象本身。
JAVA中只有值传递。
设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。 我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。
package com.test024;
public class Test024_TestMethod {
public static void main(String[] args){
test01(22);
}
public static void test01(int a){
int oddSum = 0;
int evenSum = 0;
for(int i=0;i<=a;i++){
if(i%2!=0){
oddSum += i;
}else {
evenSum += i;
}
}
System.out.println("奇数的和" + oddSum);
System.out.println("偶数的和" + evenSum);
}
public static int add(int a,int b){
int sum = a+b;
if(a==3){
return 0; //return两个作用:结束方法的运行、返回值。
}
System.out.println("输出");
return sum;
}
}
第25集:递归算法详解(recursion)
递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。
利用递归可以用简单的程序来解决一些复杂的问题。比如:大多数排序使用的就是递归算法。
-
递归结构包括两个部分:
定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环。
递归体。解答:什么时候需要调用自身方法。
-
A方法调用B方法,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己,因此我们在设计递归算法时,一定要指明什么时候自己不调用自己。否则,就是个死循环!
package com.test025; public class Test025_TestRecursion { /** * @author wangtao * * */ static int a = 0; public static void test01(){ a++; System.out.println("test01 " + a); if(a <= 10){ //递归头 test01(); } else{ //递归体 System.out.println("over"); } } public static int factorial(int n){ if(n==1){ return 1; }else{ return n*factorial(n-1); } } public static void main(String[] args){ //test01(); int a = factorial(5); System.out.println(a); } }
第26集:package的概念/api文档/生成自己项目的api文档
package概念
-
为什么需要package?
为了便于管理类:合适的类位于合适的包!
为了解决类之间的重名问题。
-
package怎么用?
通常是类的第一句非注释性语句。
包名:域名倒着写即可,再加上模块名,便于内部管理类。
其实内部实现就是靠目录结构来做到的。
-
package示例:
com.sun.test com.oracle.test com.bjsxt.gao.test com.bjsxt.gao.view com.bjsxt.gao.view.model
-
注意事项:
写项目时都要加包,不要使用默认包。
com.gao和com.gao.car,这两个包没有包含关系,是两个完全独立的包。只是逻辑上看起来后者是前者的一部分。
-
-
JDK中的主要包
java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
java.awt-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
java.net-包含执行与网络相关的操作的类。
java.io-包含能提供多种输入/输出功能的类。
java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。
生成自己项目的API文档
特殊的注释:文档注释:/**
使用JAVADOC生成API文档
解决问题:代码和文档的分离
-
常用的java注释标签:
@author 作者
@version 版本
@param 参数
@return 返回值的含义
@throws 抛出异常描述
@deprecated 废弃。建议用户不在使用该方法
-
在eclipse中创建api文档的步骤
-
右键单击项目,选中export
![](http://a2.qpic.cn/psb?/V13aP5rZ2U5DOS/P5cYnkg93C2BrtXb8GHp5W53vnSKHI5zce.8UFsCijs!/b/dBgBAAAAAAAA&bo=nQHwAQAAAAADAEg!&rf=viewer_4)
-
见下图
![](http://a2.qpic.cn/psb?/V13aP5rZ2U5DOS/FZ084wfH2xY5e6ArxrIE6DWM3ekQqz2AhgjONpiqz.w!/b/dBgBAAAAAAAA&bo=oQEMAgAAAAADAIs!&rf=viewer_4)
-
第27集:键盘输入Scanner类的使用import简单入门
键盘输入Scanner类的使用
package com.test027;
import java.util.Scanner;
/**
* 测试import导入Scanner类,以及Scanner类的使用,如何接收键盘的输入
*
*/
public class Test027_TestScanner {
public static void test01(){
Scanner s = new Scanner(System.in);
String str = s.next();//程序运行到next会停止,等待输入
System.out.println(str);
}
public static void test02(){
Scanner s = new Scanner(System.in);
System.out.println("请输入一个数据:");
int a = s.nextInt();
System.out.println("请再输入一个数据:");
int b = s.nextInt();
System.out.println("计算结果: "+ (a+b));
}
public static void main(String[] args){
test02();
}
}
import简单入门
-
为什么需要import?
如果不使用import,我们如果用到其他包的类时:只能这样写java.util.Date,代码量太大,不利于编写和维护。通过import可以导入其他包下面的类,从而可以在本类中直接通过类名来调用。
-
import怎么使用?
import java.util.Date; import java.util.*; //导入该包下所有的类。会降低编译速度,但不会降低运行速度。
-
注意要点
java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。
-
如果导入两个同名的类,只能用包名+类名来显示调用相关类:
java.util.Date date = new java.util.Data();
-
静态导入
static import静态导入的作用:用于导入指定类的静态属性(JDK 1.5后增加, 了解!!!!)
-
如何使用?
> import static java.lang.Math.*;//导入Math类的所有静态属性 > import static java.lang.Math.PI;//导入Math类的PI属性 > 然后,我们可以在程序中直接使用:System.out.println(PI);
第28集:面向对象01_面向过程和面向对象的本质区别
-
面向过程的思维模式
线性思维
思考问题直接陷入第一步做什么,第二步做什么的细节中。
适合处理简单事情,遇到复杂的事情困难程度指数级上升。
-
面向对象的思维模式
分类思维
思考问题首先解决问题需要哪些分类,然后单独对这些分类进行单独思考,最后对某个分类下的细节进行面向过程的思索。
适合处理复杂问题,进行多人协作。
第29集:面向对象02_面向对象的方式思考问题
面向对象编程(OOP)的本质是:以类的方式组织【划分】代码,以对象的方式组织(封装)数据
抽象是什么?将多个物体共同点归纳出来,抽出像的部分。
第30集:面向对象03_类和对象的关系/写出我们的第一个类
从代码运行的角度,先有类再有对象
类是对象的模板