java类中的变量

根据定义变量位置的不同,可以将变量分成两大类:成员变量和局部变量。

变量命名规则:合法的标识符,多个有意义的单词连缀而成,其中第一个单词首字母小写,后面每个单词首字母大写。

成员变量:类里定义的变量。

成员变量分为两种:类变量和实例变量。有static修饰的是类变量,没有static修饰的是实例变量。

可以把类变量和实例变量统称为成员变量,其中类变量可以理解为类成员变量,它作为类本身的一个成员,与类本身共存亡:实例变量则可理解为实例成员变量,它作为实例的个成员,与实例共存亡。

访问方式如下:

.类变量

实例.实例变量

实例.类变量

 

扫描二维码关注公众号,回复: 2903394 查看本文章
 

变量的作用域:

 

   从程序运行结果来看,不难发现类变量的作用域比实例变量的作用域更大:实例变量随实例的存在而存在,而类变量则随类的存在而存在。实例也可访问类变量,同一个类的所有实例访问类变量时,实际上访问的是该类本身的同一个变量,也就是说,访问了同一片一内存区。

局部变量:在方法里定义的变量。

局部变量分为三大类:

形参:在定义方法签名时定义的变量,形参的作用域在整个方法内有效。

方法局部变量:在方法体内定义的局部变量,它的作用域是从定义该变量的地方生效,到该方法结束时失效。

代码块局部变量:在代码块中定义的局部变量,这个局部变量的作用域从定义该变量的地方到该代码块结束时失效。

 


关键字return

return是在循环里是跳出整个方法,但是它还可以返回参数。使用格式如下:

  [修饰词] 返回值类型 方法名(形参列表){

return 返回值;

如果返回值类型写的是void,则不需要写return 返回值;可以return;

例:

/***

* 求最大值

参数:int 数组

*/

public String max(int [] args){

if(args.length==0)

{

return "数组长度不能为0";

}else{

int max=args[0];

for(int i=0;i<args.length-1;i++){

if(max<args[i+1]){//判断最大值

max=args[i+1];

}

}

return max+"";//renturn的变量 要跟返回值类型一致

}

}

public static void main(String [] args){

int [] max={};

Person p=new Person();

//String max1=p.max(max);

String max1=new Person().max(max);//跟上边写法一样

System.out.println("数组max的最大值是:"+max1);

}

如果把String 改成void的话就会报错,去掉返回值就不会报错,但这样只作为一个结束语句使用,并没有什么意义。

/***

* 求最小值

*/

public void min(int [] args){

if(args.length==0)

{

return;

}else{

int min=args[0];

for(int i=0;i<args.length-1;i++){

if(min<args[i+1]){//判断最小值

min=min;

}

}

return;

}

}

}

类的封装

访问控制符

 

private ( 当前类访问权限):如果类里的一个成员(包括成员变量、方法和构造器等)使用private访问控制符来修饰,则这个成员只能在当前类的内部被访问。很显然,这个访问控制符用于修饰成员变量最合适,使用它来修饰成员变量就可以把成员变量隐藏在该类的内部。

default(包访问权限):如果类里的一个成员(包括成员变量、方法和构造器等)或者一个外部类不使用任何访问控制符修饰,就称它是包访问权限的,default访问控制的成员或外部类可以被相同包下的其他类访问。

protected(子类访问权限):如果一个成员(包括成员变量、方法和构造器等)使用protected访问控制符修饰,那么这个成员既可以被同一个包中的其他类访问,也一可以被不同包中的子类访问。在通常情况下,如果使用protected来修饰一个方法,通常是希望其子类来重写这个方法。继承过程中使用最多

public(公共访问权限):这是一个最宽松的访问控制级别,如果一个成员(包括成员变量、方法和构造器等)或者一个外部类使用public访问控制符修饰,那么这个成员或外部类就可以被所有类访问,不管访问类和被访问类是否处于同个包中,是否具有父子继承关系。

封装指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。

 

如果上边代码中年龄一般不会超过20,年龄也没有负数对吧,所以代码中年龄应该控制在0~20之内,否则不符合我们现实生活。所以我们要改成如下

 


package

引入了包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。一旦在Java源文件中使用了这个package语句,就意味着该源文件里定义的所有类都属于这个包。

包的命名格式:   

 Java语法只要求包名是有效的标识符即可,但从一可读性规范角度来看,包名应该全部是小写字母,而且应该由一个或多个有意义的单i司连缀而成。

注意:

    package语句必须作为源文件的第一条非注释性语句,一个源文件只能指定一个包,即只能包含一条package语句,该源文件中可以定义多个类,则这些类将全部位于该包下。

 package com.zhanwang.test;


public class TestDog {


public static void main(String[] args) {
Dog p=new Dog();
p.setAge(130);
System.out.println("获取年龄:"+p.getAge());
}
}
/**
 * 狗类
 * @author shenjian
 * 2017-9-19
 */
class Dog{
private int age;
/**
* 设置年龄
* @param age 年龄
*/
public void setAge(int age) {
this.age=age;
}
/**
*  获取年龄的值
* @return 返回年龄值
*/
public int getAge() {
return this.age;
}
}

猜你喜欢

转载自blog.csdn.net/qq524752841/article/details/78032816