A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

二.函数(也叫方法)部分做重点记录:
1.示例:
class         FunctionDemo{
     public static void main(String[] args){
     }
}
/*
函数的格式:
  修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2)
{
        执行语句;
        return 返回值;
}
返回值类型:函数运行后的结果的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。
函数的特点:
·定义函数可以将功能代码进行封装
·便于对该功能进行复用
·函数只有被调用时才会被执行
·函数的出现提高了代码的复用性
·对于函数没有具体返回值的情况,返回值类型用关键字void表示,
那么该函数中的return语句如果在最后一行可以省略不写。
·注意:
*.函数中只能调用函数,不可以在函数内部定义函数。
*.定义函数时,函数的结果应该返回调用者,由其处理。
               
        (1)<=>(2)都是调用了函数,两种情况是一样的。

        (1)        int x=getResult(4);
                int w=getResult(6);
                System.out.println("x="+x+",w="+w);

}
        public static int getResult(int num){
                return num*3+5;
        }
*/

        (2)        getResult(8);
}
        public static void getResult(int num){
       
                System.out.println(num*3+5);

        }
}
2.如何定义一个函数(即方法)?
(1)先明确该函数的运算结果,即明确函数的返回值类型。
(2)再明确函数的参数列表,即参数类型和参数个数。
举例演示:
需求:
     定义一个功能,完成3+5的运算,并将结果返回给调用者。
思路:
如何定义一个函数:
1.先明确该函数的运算结果的类型(明确函数的返回类值类型)
2.明确在函数中参与运算的内容是否有未知(参数的类型和参数的个数)。
class         FunctionDemo2{
     public static void main(String[] args){

                int sum=getSum(3,5);
                System.out.println("sum="+sum);

      }
      public static int getSum(int x,int y){
                return x+y;
      }
}
以上代码可以化为:
class         FunctionDemo2{
     public static void main(String[] args){
                getSum(3,5);
     }
     public static void getSum(int x,int y){
                int sum =x+y;
                System.out.println("sum="+sum);
     }
}
需求:判断两个数是否相同。
思路:
1.明确功能的结果:结果是:boolean.
2.功能是否有未知内容参与运算。有,两个整数。
第一种方法:
class         FunctionDemo2{
     public static void main(String[] args){
                boolean cp=compare(6,8);
                System.out.println("cp="+cp);
     }
     public static boolean compare(int a,int b){       
                if(a==b)
                   return true;
                else  //该else可以省略
                   return false;
     }
}
第二种方法:
class         FunctionDemo2{
     public static void main(String[] args){

                boolean cp=compare(6,8);
                System.out.println("cp="+cp);
     }
     public static boolean compare(int a,int b){       
               return a==b;// 三元运算               


    }
}
       
//三元运算(return(a==b)?true:false简写为return a==b;
需求:定义功能,对两个数进行比较,获取较大的数。
第一种:        class         FunctionDemo2{
     public static void main(String[] args){

                int max=getMax(6,9);
                System.out.println("max="+max);
     }
     public static int getMax(int a,int b){
                if(a>b)
                   return a;
                else
                   return b;
               
    }
}
第二种:        class         FunctionDemo2{
     public static void main(String[] args){

                int max=getMax(6,9);
                System.out.println("max="+max);
     }
     public static int getMax(int a,int b){
                return (a>b)?a:b;
               
    }
}   
下面这道题是一些基础的综合,也是为以后练习设计几个常用的功能函数做下伏笔。
/* 题:
               
                ----*
                ---* *
                --* * *
                -* * * *
                * * * * *

(
不是规律的规律:
尖朝上,可以改变条件,让条件随着外循环变化
尖朝下,可以初始化值,让初始化值随着外循环变化。
)
*/
class         ForForTest2{
     public static void main(String[] args){

       
                for(int x =0;x<5;x++)
                {
                        for(int y =x+1;y<5;y++)
                        {
                           System.out.print("-");
                        }
                        for(int z =0;z<=x;z++)
                        {
                           System.out.print("* ");
                        }
               
                System.out.println();//只是换行的功能
       
                }
     }       
}
/*需求:定义一个功能,用于打印矩形。
思路:
1.确定结果:没有,因为直接打印,所以返回类型是void。
2。有未知内容吗?有,两个,矩形的行和列不确定。
(我们可以打印分割线作出多个矩形的间隔,可以把分割线也做

成函数)

class FunctionTest{
     public static void main(String[] args){
        draw(6,8);
        printHr();
        draw(5,6);
        printHr();
        }
        public static void draw(int row,int col){
                for(int x=0;x<row;x++){
                   for(int y=0;y<col;y++){
                        System.out.print("*");
                   }
                   System.out.println();
                }
        }
        public static void printHr(){
           System.out.printl("-----------------");       
     }
               
}  
三。重载:
概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。
好处:方便于阅读,优化了程序设计。
什么时候用重载:当定义的功能相同,但参与运算的未知内容不同,那么这时就定义一个函数名称以表示功能,方便阅读,而通
过参数列表的不同来区分多个同名函数。函数的功能一样,仅仅是参与运算的未知内容不同时,可以定义多函数,却使用统一函数名称,这样方便阅读。
示例:
返回两个整数的和
  int add(int x,int y){return x+y;}
返回三个整数的和
  int add(int x,int y,int z){return x+y+z;}
返回两个小数的和
  double add(double x,doubley){return x+y;}
*需求:定义一个打印九九乘法表式功能的函数,不仅仅局限于九九乘法,可以六六、八八等乘法。这里不仅用了调用函数对象,
也用了重载(令定义num,num则是灵活的数,那么本函数可以num的乘法表功能)
class FunctionTest
{
     public static void main(String[] args)
    {
        print99(6);
        print99(8);
     }
     public static void print99(int num){
        for(int x=1;x<=num;x++){
           for(int y=1;y<=x;y++){
             System.out.print(x+"*"+y+"="+x*y+"\t");
           }
           System.out.println();
        }
    }
       
}
*定义一个加法运算,获取两个整数的和;获取两三个整数的和。
class FunctionOverload{
     public static void main(String[] args){
        int a=add(2,9);
        System.out.println("a="+a);
        int b=add(2,9,3);
        System.out.println("b="+b);
     }
     public static int add(int x,int y){
        //System.out.print("x+y="+(x+y)+"\n");
        return x+y;

     }
       
     public static int add(int x,int y,int z){
        //System.out.print("x+y+z="+(x+y+z)+"\t");
        return x+y+z;
     }
}
四。数组.
概念:数组就是同一种类型那个数据的集合,是一个容器,是引用类型,存储在堆中。
数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
示例;int[] arr = new int[]{3,5,1,7};int[] arr = {3,5,1,7};
在内存结构中,java分了5片区域。(主要讲下栈和堆)
1:寄存器。2:本地方法区。3:方法区。4:栈内存。5:堆内存
栈内存:存储的都是局部变量(函数中定义的变量,函数上的参数
,语句中的变量);只要数据运算完成所在的区域结束,该数据就被释放。
堆内存:用于存储数组和对象,也就是实体,通过new建立。
1:每一个实体都有内存首地址值。
2:堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。
3:垃圾回收机制。
垃圾回收机制Garbage Collection
对象空间的分配:使用new关键字创建对象即可
对象空间的释放:将对象赋值null即可,垃圾回收器将负责回收所有“不可达”对象的内存空间。
要点:
  *  程序员无权调用垃圾回收器
   * 程序员可以通过System.gc()。通知GC运行,但是jAVA规范并不能保证立刻运行。
    *finalize方法,是JAVA提供给程序员用来释放对象或资源的方法,但是尽量少用。
什么是垃圾?
对象无人使用了,就变成了垃圾。
数组代码示例:
需求:想定义一个可以存储3个整数的容器。
class ArrayDemo{
     public static void main(String[] args){
        int[] arr = new int[3];
        arr[0] = 80; //名称为arr的数组,角标为0的位置。

                    //给该位置赋值为80.
        System.out.println(arr[0]);//打印数组中角标为

                                  //0的元素的值。
     }
}
* 数据类型不同,结果不一样。
class ArrayDemo{
     public static void main(String[] args){
        int[] x = new int[3];
        int[] y=x;
        y[1]=78;
        x[1]=66;
        x=null;
        System.out.println(y[1]);//此时y[1]=66.
     }
}

4 个回复

倒序浏览
加油,支持
回复 使用道具 举报
MARK

这些笔记很基础 很有用
回复 使用道具 举报

加油……
回复 使用道具 举报
200米王朝 发表于 2014-8-5 09:02
MARK

这些笔记很基础 很有用

拿走吧……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马