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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 664941114 中级黑马   /  2016-7-12 20:49  /  394 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.Java的方法:
a.定义                  
   public static void main(String[] args) {
          
   }         
   修饰符  返回值类型  方法名(形参类型1 变量名1,形参类型2 变量名2,.....){//形参可以一个没有

      return 返回值;//它的类型跟返回值类型对应
                   //当返回值类型为void
                   //可以有return语句: return; 或者 不写
   }

   注意事项:
     1.返回值类型可以为八大基本数据类型,引用数据类型,void
     2.方法名:xxxxXXXXXXXX 首个单词小写,剩余单词首字母大写
b.使用:
     使用格式: 方法名(实参值1,实参值2,...);//实参与方法的形参一一对应
         public static void main(String[] args) {
                 //方法的调用
                 int i = getSum(10,20);//编译器根据方法的名称和形参的类型确定调用getSum(int,int)方法
                                       //把10的值传给a,20的值传给b
                 System.out.println(i);
                 System.out.println(getSum(100,20));//如果方法有返回值可以直接调用方法打印



        printJava();
        System.out.println(printJava());//不能直接用输出语句打印
         }
         
         //求两个整数的和
         public static int getSum(int a,int b) {
                 int sum = a+b;//sum=10+20->sum=30
                
                 printJava();//普通方法还可以调用其它方法
                
                 return sum;//将30返回到方法调用处
                
                 //printJava();//编译就报错,因为return下面的语句永远执行不到
         }

         public static void printJava(){
        System.out.println("I  love Java");
         }
        使用方法的优点:
      提高了代码的复用性

  c.如果类中方法的形式参数个数,类型,类型顺序不同三个条件满足至少一个就构成重载关系
    与返回值类型无关
    public static int getSum(int a,int b){

    }
    public static int getSum(int a,int b,int c){
           
    }



    public static int getSum(int a,double b){//③

    }

    public static int getSum(double a,int b){//④与③参数类型顺序不同

    }




   /*
     //与返回值类型无关,编译会报错
   public static int getSum(int a,double b){

    }

    public static void getSum(int a,double b){

    }

    */


    /*
     //构成重载与变量名无关,编译会报错
    public static int getSum(int a,double b){  

     }

     public static int getSum(int c,double d){

     }
   */


2.Java中的数组
  a.定义:
     1.动态初始化:'动'体现在,仅仅给数组指定长度,而不手动赋值
        int[] arr=new int[3];//定义了一个长度为3的数组
                             //相当于定义了3个int类型变量
                             //arr[0],arr[1],arr[2]相当于3个int类型的变量
                             //数组中有默认值arr[0],arr[1],arr[2]三个元素的值都是0

     2.静态初始化:'静'体现在,在定义的数组就手动给数组中的元素赋值
       int[] arr={10,29,37};//定义一个长度为3的数组
                           //相当于定义了3个int类型变量
                          //  arr[0],arr[1],arr[2]相当于3个int类型的变量
                          //arr[0]=10,arr[1]=29,arr[2]=37

   b.使用:
     int[] arr=new int[3];
     int i=arr[2];//取出arr[2]的值0给了i

     arr[2]=10;//将10的值赋值给arr[2]

     arr.length;//length是数组的属性,不需要加()
                //求字符串的长度使用length()方法

   c.注意:
     int[] arr=new int[]{1,23,23};
     arr[100]=3;//编译时期仅检查语法错误,取元素的格式没有问题
                //运行时期,去数组中查找根本没有100号索引元素
                //ArrayIndexOutOfBoundsException 索引越界异常

     arr=null;
     arr.length;//编译时期仅检查语法错误,获取长度的格式没有问题
                //arr根本没有指向任何数组对象,arr.length获取不到数组长度
                //NullPointerException 空指针异常
                //null只能赋值给引用类型变量,不能给基本数据类型
3.Java中的内存结构:
  a.栈结构:局部变量
    public static  void  method(int a){//形参a是方法的一个局部变量,作用域仅在method内部
                                           //当method()方法执行完毕,a变量会被销毁

     int  c=2;//c也是一个局部变量,当method()方法执行完毕,c变量会被销毁

     for (int i=0;i<10;i++) {//i仅能在for循环内部使用,i也是一个局部变量,for循环执行完毕,i就被销毁
            
     }
   }
  b.堆结构:只要跟着new关键字的,都在堆中 (new int[3],new Scanner(System.in),...)

  c.常量池
    整数常量(1,2),小数常量(3.1415926),字符常量('A'),字符串常量("abc")....

4.成员变量:可以被所有的方法共享
  class Demo{
     static int x=3;//静态修饰的方法访问的成员变量也必须加static修饰
     public static void method(){
       int i=3;//i仅仅只能在method()中使用,是method()的局部变量
       System.out.println(x);//3
     }

     public static void method2(){
       System.out.println(x);//3
     }
  }


5.基本类型的值传递和引用数据类型的值传递

  a.引用数据类型传递的是对象的地址值:例如:数组变量的传递,传递是数组的地址值
    使main方法中和调用的方法操作的都是同一个数组对象
  b.基本数据类型的值传递,仅传递变量的值,并且调用方法中变量值的改变
    不影响main中的变量值
   class Demo{
             public static void main(String[] args) {
                         int[] arr=new int[3];
                         change(arr)
            System.out.println(arr[2]);

                               int a = 10;
                         int b = 20;
                       

                         change(a, b);

                       
                         System.out.println("a:" + a + ",b:" + b);
                              

                              
             }
        public static void change(int[] arr){
                arr[2]=3;
        }
                    
                     public static void change(int a, int b) {
                             a++;
                   b+=2;
                     }
   }

3 个回复

倒序浏览
顶顶顶顶顶顶
回复 使用道具 举报
顶顶顶顶顶
回复 使用道具 举报
66666666666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马