奋斗黑马程序员----java函数部分

来源:互联网 发布:手机淘宝 怎么开店 编辑:程序博客网 时间:2024/05/20 22:29
------- android培训、java培训、期待与您交流! ----------  

java函数部分======
====函数:函数就是定义在类中的具有特定功能的一段独立小程序。
函数也称为方法。
====格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,......)
{
执行语句;
return;
}
====讲解演示:
class Function{
public static void main(String[] args){
//int a = 3;
//int b = 4;
//int c;
//c = a+b;
//c = 5+7;
//c = 9+8;//如此多次使用,会很不便
int c = add(3,4);
System.out.println("c="+c);
}
//实现求和运算的功能
******//注意:如果一个静态函数调用另一个函数时,那么被调用函数也应该是静态的*******
static int add(int a,int b)//默认是public的
{
return a+b;
}
}
====函数格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,......)
{
执行语句;
return 返回值;//每一种返回值都有一种数据与之对应
//*****return语句就是结束语句,下面再写的语句都是废话*******
}
===讲解:
.......
static(修饰符) int(返回值类型) add(int a,int b)//默认是public的,名称定义一定要体现阅读性(add)
//a,b为变量,确定函数当中要用到的数据
{
return a+b;
}
java是强类型的,对每一种语言的数据都进行了具体的划分。
*****记住:当出现两个以上单词定义名称时,第一个单词首字母小写,其后每一个单词首字母都要大写(驼峰式写法)
====了解:
匈牙利命名法:在Windows编程中使用非常普遍,由微软的一位匈牙利程序员提出。匈牙利命名法通过在变量名前面加
上相应的小写字母的符号标识作为前缀,标识出变量的作用域、类型等。例如,m_lpszStr表示
指向一个以0字符结尾的字符串的长指针成员变量。在面向对象的程序设计中匈牙利命名法使用起来非常别扭。

Camel命名法:即骆驼式命名法,原因是采用该命名法的名称看起来就像骆驼的驼峰一样高低起伏。
Camel命名法有两种形式:混合使用大小写字母和单词之间加下划线,例如runFast和run_fast都属于Camel命名法。

Pascal命名法:与Camel命名法类似,不过Pascal命名法的首字母为大写字母。
=====形式参数:参加运算的数据(直译)
也可以不定义参数,但里面的运算受限制????
=====特殊情况:功能没有具体的返回值,这时,return的后面直接用分号(;)结束
那么返回值类型怎么体现呢?因为没有具体值,所以不可以写具体类型。只能一个关键字来表示这种情况。
关键字是:void
***总结:没有具体返回值时,返回值类型用void来表示。
***注意:如果返回值类型是void的话,那么函数中的return语句可以省略不写。
例如:
static void myPrint()//可减少代码重复出现的次数。
//****提高代码重用性是必须要解决的问题
{
System.out.prinltn("hello java");
//这里就不用写return语句了
}
在主函数中可以通过调用myPrint();来打印语句

====函数的特点:
1,定义函数就是将功能代码**封装**
2,便于对该功能进行复用
3,函数只有被调用才能执行
4,函数的出现提高了代码的**复用性**
5,对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么return语句可以省略不写
===注意:
1,函数中只能调用函数,不可以在函数内部定义函数
2,定义函数时,函数的结果应该返回给调用者,交由调用者处理
例如:不能这么写
class FunctionDemo{
public static void main(String[] args){
public static void myPrint(){//这么写是错误的
System.out.println("Hello java");
}
}
int x = add(3,5);
System.out.println("x="+x);
addd(3,5);
}
public static int add(int a,int b){
return a+b;
}
public static void addd(int a,int b){
System.out.println(a+b);
//此处不应该这么写,应该使用return语句,输出与否,应该由调用者决定
}
//此时,如果在主函数中,使用语句
System.out.println(addd(3,5));那么系统会报错,因为,输出语句**不能操作没有返回值**的函数,比如:void类型的
====开发时,我怎么写一个函数呢?----要有需求
class FunctionDemo3{
public static void main(String[] args){
draw(4,6);
draw(7,9);
}
/*
需求1:定义一个功能,完成两个整数和的获取
思路:
既然定义功能,就可以用函数来实现
通过两个明确来完成:1,明确这个功能的结果是什么??? ---两个整数的和,是功能的结果,所以该功能的返回值类型是int。
2,明确这个功能实现过程中是否需要位置内容参与运算???---有,加数和被加数。这就是函
数的参数列表(参数的个数,参数的类型),其实就是在明确参数列表
注意:**参数的类型和返回值的类型没有直接的关系。
*/
public static int add(int a,int b){
int sum = a+b;
return sum;
}
/*
需求2:定义一个功能,画一个矩形,在控制台
明确一:这个功能的结果是什么?---没有结果,因为直接打印到了控制台,并未返回给调用者
用void表示。
明确二:这个功能实现过程中是否需要位置内容参与运算??---有,行和列不确定。两个,整数,int
*/
public static void draw(int row,int col){
for(int x=1;x<row;x++){
for(int y=1;y<col;y++){
System.out.print("*");
}
System.out.println();
}
//return;语句可以不写
}
/*
需求3:定义一个功能,比较两个数是否相等
明确一:这个功能的结果是什么??---有,boolean
明确二:这个功能实现过程中,是否需要位置内容参与运算??----有,两个整数
*/
public static boolean equals(int a,int b){//这种的boolean类型的要注意
/*
if(a==b){
return true;
}//else,可不写
return false;
///后期可以这么写
boolean x;
if(a==b)
x = true;
else//else可以省略不写,因为,return语句就是结束语句
x = false;
return x;
*/
//三元运算符必须有结果,而if else语句不已定有结果
//return (a==b)?true:false;多余,a==b的本身就是一个boolean值
return a==b;//返回一个boolean值
}
/*
需求4:定义一个功能,获取两个整数中较大的那个数
明确一:这个功能的结果是什么?-----,有,其中一个整数,int
明确二:这个功能实现过程中是是否需要位置内容参与运算----有,参与比较的两个整数,int
*/
publicstatic int getMax(int a,int b){//a,b在给作用域内,不会产生冲突
/*
if(a>b)
return a;
else 
return b;
*/
return a>b?a:b;
}
}
====打印99乘法表
:没有结果,有参数,
class FunctionDemo4{
public static void main(String[] args){
print99();
}
public static void print99(){
for(int x=1;x<=9;x++)
{
for(int y=1;y<=x;y++)
{
System.out.print(x+"*"y+"="+y*x+"\t");
}
System.out.println():
}
}
}

====根据考试成绩获取学生分数对应的等级
90-100A
80-89B
70-79C
60-69D
60以下E
结果:等级,字符,char类型的
参数:分数,int
public static char getLevel(int num)
{
char level;
if(num>=90 && num<=100)
level = 'A';
else if(num>=80 && num<=89)//不写else,程序会做出多余的判断,写上else后,只执行一次就结束了
level = 'B';
else if(num>=70 && num<=79)
level = 'C';
else if(num>=60 && num<=69)
level = 'D';
else //删掉if(num<60 || num>100)//排除不合格的范围
level = 'E';
return level;
}
//**编译的主要职责在于检查代码。检查语法错误!不对里面的值进行解析。运行时,虚拟机才对里面的数据进行判断并运算
====函数是怎么运行起来的?
javac对给定的java文件进行编译,成功了会生成.class文件,此文件供虚拟机使用
java *启动虚拟机程序,
栈的特点:先进后出
====函数的重载(overload)
在同一个类中,允许存在一个以上的**同名函数**,只要他们的**参数个数或者参数类型**不同即可。
重载的特点:与返回值类型无关,参看参数列表
重载的好处:方便与阅读,优化了程序设计
classFunctionDemo4
{
/*
需求:函数的重载:
1,同一个类,
2,同名
3,参数个数不同,or参数类型不同
4,函数的重载和返回值类型无关???
5,java是严谨性语言,如果函数出现的调用的不确定性,会编译失败
*/
public static void main(String[] args)
{
add(4,6);
add(4.4,6.6);
add(3,4,5);
}
//加法运算,两个整数的和
public static int add(int a,int b)
{
return a+b;
}
//加法运算,两个小数的和
public static double add(double a,double b)  //如果,double的参数改成(int a,int b)此时无法编译通过,与返回值无关的
{
return a+b;
}
//加法运算,三个整数的和
public static int add(int a,int b,int c)
{
return add(a,b)+c;
}
}
====打印乘法表
/*
打印乘法表:
*/
public static void printCFB(int num)//动态乘法表
{
for(int x=1;x<=num;x++)
{
for(int y=1;y<=x;y++)
{
System.out.print(y+"*"+x+"="+x*y+"\t");
}
System.out.println();
}
}
public static void print99()//标准的9*9的乘法表
{
/*
for(int x=1;x<=num;x++)
{
for(int y=1;y<=x;y++)
{
System.out.print(y+"*"+x+"="+x*y+"\t");
}
System.out.println();
}
*///可以换成:
printCFB(9);//代替上面的一段代码
}

  ------- android培训、java培训、期待与您交流! ----------  详细请查看:http://edu.csdn.net/heima/
原创粉丝点击