#java系列课程#变量和方法

变量


在java中,每个类中都有变量,由于java是强类型语言,所以每个变量都要有类型。


在使用变量之前,必须先声明变量的类型。类型可以是简单类型,也可以是引用类型。


按照范围划分,分为全局变量和局部变量。(局部变量更助于理解,书面应该叫成员变量)在java中全局变量和局部变量是不一样的。全局变量应用的范围是整个一个类,因此声明的位置也是紧接着类下面,和方法是一个层面的。也就是说你写的程序是一层一层的。全局变量是处于第二层。



如:

public class Niukewang{


int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


String daima="代码";




}


那么局部变量正好相反,处于方法的里面,出了方法他就不好使了,自动free。如果不清空的话内存会被越占越多,就会发生内存溢出,所以局部变量是自动释放的。全局变量也一样,只不过是跟着方法一起被释放。


我们就是局部变量,没有一个人可以长生不老


public class Niukewang{


int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


String daima="代码";

{


int m=100;//这也是局部变量,只在这个代码块起作用


}



}


那么可能会问我在代码块中重新申请局部变量能编译成功么?

如这样


public class Niukewang{


int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


String daima="代码";


{

int mianjing=11;//这样可以么?


}


}


肯定会出错的!一个类中不允许有一样的变量,如果想重新赋值,那可以在后面直接打上mianjing=11;

这样才叫重新赋值。


那么再来看另外一种情况


public class Niukewang{


int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


String daima="代码";


{

mianjing=11;//这样可以么?


}

mianjing=111;//这样也是可以的

}


再来看

public class Niukewang{


int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


String daima="代码";


{

int mianjing1=11;//这样可以么?


}

mianjing1=111;//这样就是不可以了!mianjing1只在那个代码块中起作用,出了这个代码块,就被自动释放了,栈就被自动释放,不存在什么mianjing1了。





再来看


public class Niukewang{


int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


String daima="代码";


{

int mianjing1=11;//这样可以么?


}

int mianjing1=111;//这样也是可以的,重新声明一个

}


所以说局部变量的范围只在代码块中有效,但是全局变量就是针对整个类中都有用。


public class Niukewang{


static int a=10;

public static void main(String [] args){


int a=100;

System.out.println(a);//打印100


}



}

这个是允许的


在同一范围内,局部变量不能重复命名。

在同一范围内,全局变量和局部变量命名可以重复,但是以局部变量为准。




变量总是在一个类中声明。但一个变量可能和整个类相关联,也可能只在方法体或某个程序块中起作用。


public class Niukewang{


public static void main(String [] args){

int a,b,c=100;


System.out.println(c);//打印出就是100

System.out.println(b);//这个就是有错误的,因为全局变量必须赋初始值


}

}



全局变量必须有初始值


public class Niukewang{

static int d;

public static void main(String [] args){

int a,b,c=100;


System.out.println(d);//这个就没有问题,全局变量默认初始值为0;

System.out.println(b);//


}

}


全局变量默认初始值为0;那么别的类型呢?


byte:0

int:0

float:0.0f

char:’\u0000‘

short:0

long:0l

double:0.0

boolean:false

String:null

变量的初始化


局部变量在使用之前,必须先要初始化


全局变量如果没有初始化就拿来使用,系统将会自动给他一个默认的初值



public class Niukewang{

static int b;

static boolean flag;

static char s;

public static void main(String [] args){


int a;

System.out.println(a+10);//这个结果是错误

System.out.println(b+10);//这个结果为10

System.out.println(flag);//结果为错误

System.out.println(s);//结果为空


}






}



函数,也称方法



所谓函数,就是用来解决一类问题的代码的有序组合,是一个功能模块。


语法结构


返回值 函数名 (参数类型 形式参数1,参数类型 形式参数2,。。。){



程序代码 statements;

【 return 返回值】;



}


也就是说这个返回值是可有可无的。


public class Niukewang{


public static void main(String [] args){



}



static void niu(){




}//这个返回值为空,函数名(形参),这个就是方法/函数的构成



}



public class Niukewang{


public static void main(String [] args){




}



static void niu(){


System.out.println(“你好,牛客网!”);//这个就是一个方法/函数的一个构成

}



}


但是这个时候你运行时没有任何结果的,那么如何让其有结果呢


你需要调用它的!就像宋仲基点名一样,点到谁,谁才能说话,叫到谁谁才执行任务,是一个道理


public class Niukewang{


public static void main(String [] args){


niu();


}


void niu(){


System.out.println(“你好,牛客网!”);//    这个就是一个方法/函数的一个构成

}




}


//这回才能执行



其中:


1、 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用


2、 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void ;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值


3、 方法名:定义的方法的名字,必须使用合法的标识符


4、 参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开


根据方法是否带参、是否带返回值,可将方法分为四类:


  • 无参数无返回值函数


  • 无参数有返回值函数


  • 有参数无返回值函数


  • 有参有返回值函数


下面我们来就一个例子理解方法,那就是计算三角形的面积


public class Niukewang{


public static void main(String [] args){


getArea();

getArea2(10,20);

System.out.println(getArea3());

System.out.println(getArea4(10,20));


}


static void getArea(){// 1.无返回值,无形参

int d=10;

int h=20;

System.out.println(d*h/2);

}


static void getArea2(int d,int h){// 2.无返回值,有形参


System.out.println(d*h/2);

}

static double getArea3(){// 3.有返回值,无形参

int d=10;

int h=20;

return d*h/2;

}


static  double getArea(int d,int h){// 4.无返回值,有形参

return d*h/2;

}

}


这就是函数或者方法的四种形式,你写的代码几乎都包括。


练习:圆形,梯形的面积的四种方法的代码


那么方法的命名有没有一些规范呢?


是有的!


1.使用完整描述符来准确地描述变量、字段或类。 例如,使用的名称可以是 FirstName、GrandTotal 或 Corporate Customer。虽然像 x1、y1 或 fn 这样的名称较短容易输入,但是它们并不提供任何信息指出它们所代表的内容。这样对代码的理解、维护和增强会造成一定困难。

2.使用适用于领域内的术语。 如果您的用户将他们的客户称为顾客,则对这个类使用术语Customer来代替Client。许多开发人员曾经犯了这样一个错误:当业界或领域中已存在更贴切的术语时,他们还冥思苦想,准备为一些概念创建通用术语。

3.巧妙节俭地使用缩写。 这表示您应该维护一份标准短格式(缩写)的列表,应该明智地选择它们,并在使用时保持一贯性。例如,如果要使用字 arithmetic 的短格式, 选择 ar、ari 或 art 中...


后续会说出一些常见的编程风格~


常见的错误:


  • 直接在类下面就写执行语句了,正确的是一定要写在主方法里

  • 方法前面不写static,正确的是要写

  • 形参有了,下面还要再声明变量,正确的是形参是外部送入值,不是你再声明

  • 有返回值的,调用发放以为直接就有结果,正确的是要打印出来才能有结果

  • 形参不能赋初始值


函数的调用



求三角形面积的就是里面形参的传递


int area=getArea(2,6);

                 | |____

    void getArea(int h,int d);


基本类型变量的值传递


public class Niukewang{


  static int a;

  public static void ok(int b){


   int a=0;

   b=b\2;

   System.out.println(b);


}


public static void main(String [] args){


   int b=10;

   System.out.println(a);

    ok(a);

    System.out.println(b);



}



}


这个的执行顺序就是执行主函数,到ok方法的时候,就去执行方法,然后再打印最后一句话。


那么现在重要的是结果,下面两行的b的结果分别是多少呢


10和5


也就是说是把a这个值传过来了,a本身没有传过来


变量的生命周期与作用域


变量都是先定义,后使用的,但是也不是在变量定义后的语句一直都能使用前面定义的变量。


就像前面说的全局变量的作用域是整个类,局部变量是就在其所在的代码块起作用


java的编程风格


方法命名


  • 驼峰式:calculateScore()

  • 英文单词式:delete()


变量命名


  • 驼峰式:calculateScore

  • 英文单词式:name


常量命名


  • 下划线式:HEAD_COUNT

  • 缩写大写:OI


类的命名


  • 首字母大写:UserObject

  • 一个首字母大写:People


数组命名


int [] a;


关于缩进,每一层都要往下依次加一个tab


关于注释


这个也是写代码的时候必须有的,因为你可能后面再看的时候你自己都忘记了,所以这个是非常必要的。注释分为三种,单行和多行都是非常非常常用的,几乎每时每刻都要用,这样也无形的为他人增加了便利

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务