美文网首页
2020-06-09 变量和函数

2020-06-09 变量和函数

作者: testerPM | 来源:发表于2020-06-09 11:23 被阅读0次

    变量:

    (1) 根据数据类型分类:
    1. 基本数据类型变量 2. 引用数据类型变量

    (2) 根据变量的位置分类:
    1. 局部变量 2. 全局变量(也叫成员变量)

    局部变量举例:

    (1) 定义在方法中的变量

    下面代码 ,第二行会报错 age cannot be resolved to a variable意思是: age不能被解析成一个变量
    分析:age定义在main方法中,所以是局部变量,而局部变量的作用域是:变量定义之后,方法结束之前-》所以输出age语句在age定义之前会报错,只能在定义之后引用

    //1  public static void main(String[] args) {
        //2     System.out.println(age);
            //3 int age = 10;
             //4 System.out.println(age);
        }
    

    下面代码,在myFuction()方法中引用age,也会报错

    
        public static void main(String[] args) {
    
            int age = 10;
        }
    
        public void myFuction() {
            //age定义在main方法中是局部变量,只能作用在main方法体中
            //main方法体之外是不能被引用的
            System.out.println(age);//此处会报错
        }
    

    (2) 定义在代码块中 的变量
    一对花括号括起来的就是代码块
    代码块中定义的变量作用范围: 定义之后,代码块结束之前
    如下代码,在代码块之外输出age2语句会报错,因为age2只能作用在代码块中

    
           {
                int age2 = 20;
                
            } 
                System.out.println(age2);
    
    

    (3) 方法的形式参数变量
    作用域: 整个方法内
    如下面main方法上的变量args,在方法体中输出此变量,代码不会报错,可以引用

        public static void main(String[] args) {
            System.out.println(args);
    
        }
    

    总结:

    image.png image.png

    (1)局部变量要初始化

    上图总结中提到,方法内和代码块中定义的局部变量,在使用之前,必须要初始化。举例如下:

    在main方法中定义一个局部变量但未初始化,所以下图会有黄色波浪线警告-》 The value of the local variable a is not used意思是变量不能被使用


    image.png

    如果必须要使用,如下图,会报错-》The local variable a may not have been initialized意思是未初始化

    image.png

    上图点击蓝色字体 Initialize variable 会自动初始化a,默认为0

        public static void main(String[] args) {
            int a = 0 ;
            System.out.println(a);
    
        }
    
    

    (2)局部变量不能添加修饰符
    如下图给局部变量a加 public 会报错


    image.png

    全局变量

    全局变量是在类范围内定义的变量,也称为成员变量,或类属性
    全局变量特点:

    1. 可以有修饰符,也可以没有修饰符
      public ,protected,默认修饰符,private

    2. 定义在函数外部

    3. 作于域为整个类

    4. 可以不用初始化,也可以初始化,如果没有初始化,则默认该数据类型的默认值

    (1)静态的全局变量
    静态方法只能引用静态变量,使用普通全局变量会报错

    public class Var {
        static int a;//静态全局变量也叫静态成员属性
    
        public static void main(String[] args) {// 类级别的静态方法
            System.out.println(a);// 没有初始化,默认输出为0
    
        }
    
    }
    

    (2)普通全局变量

    public class Var {
        public int b;//普通的全局变量也叫对象成员属性,对象属性
            int a;//普通全局变量
        public void myFuction() {//对象方法也叫实例方法
            System.out.println(b);
    
        }
    }
    
    

    函数(也叫方法)

    函数:完成功能或者解决某个问题的代码块,是可以重复调用的
    语法:
    函数分类:(1)普通方法: 包括静态(static)方法和实例方法(或者叫对象方法)(2)构造方法

    修饰符  函数返回值类型  函数名(参数类型  参数名......){
       函数体......
    } 
    
    
    

    修饰符: public->所有地方都可以引用(本类,子类,不同包,同包都可以引用)
    private->只能本类中使用

    返回值类型:可以是基本类型( int ,boolean .......)也可以是引用数据类型(String.....)

    函数名:小驼峰命名->第一个单词首字母小写)
    参数: 完成功能需要用到的数据
    参数类型:可以是基本数据类型也可以是引用数据类型

    具体语法解释见下图:


    image.png

    需求:完成2个整数的加法运算

    第一步:定义一个功能方法

        public int sum(int a, int b) {
            int add = a + b;
            return add;
    
        }
    
    

    第二步:函数(方法)调用

    1. 静态方法调用非静态方法-》这种是不允许的,编译会报错
        public static int sum(int a, int b) {
            sayHello();//静态方法调用非静态方法,会报错
            int add = a + b;
            return add;
    
        }
    
        public void sayHello() {
            System.out.println("hello");
    
        }
    
    
    

    解决办法:

    1. sayHello()加静态属性-》静态调用静态:类名.方法名()
      (注意:类名也可以不用加)
    2. 不加静态属性,通过创建对象来调用
      语法:
    //创建对象
    //通过new 调用类的构造方法 -》即类名 ()来创建对象实例
    类名   实例名=new  类名();
    // 调用对象方法(或实例方法)
       变量名.方法名();
    

    2.非静态方法可以调用静态方法: 类名.方法名()

        public int sum(int a, int b) {
            Var.sayHello();//非静态方法调用静态方法
            int add = a + b;
            return add;
    
        }
    
        public static void sayHello() {
            System.out.println("hello");
    
        }
    
    

    3.非静态方法可以相互调用,不需要创建对象: 方法名()

        public int sum(int a, int b) {
            sayHello();
            int add = a + b;
            return add;
    
        }
    
        public void sayHello() {
            System.out.println("hello");
    
        }
    

    函数调用注意事项

    image.png

    面向对象事例解释

    (1)创建一个鹦鹉类

    public class Parrort {
        public String color;// 蓝色,绿色,红色.....
        public String type;// 类型:金刚鹦鹉,虎皮鹦鹉
        public int age;
    
        /**
         * 行为:学舌,说话,吃饭,睡觉-》程序里体现的是功能
         * 
         * @param content
         */
        public void say(String content) {
            System.out.println(content);
        }
    
    }
    

    (2)创建一个测试类

    public  class test{
    
    public static void main(String[] args) {
            //调用构造方法创建对象
          Parrort   p = new Parrort();
            //对象属性赋值
              p.color="红色";
              p.type="金刚鹦鹉";
              p.age=1;
             //方法调用
              p.say("hello");
    }  
    
    
    }
    

    相关文章

      网友评论

          本文标题:2020-06-09 变量和函数

          本文链接:https://www.haomeiwen.com/subject/rukstktx.html