目录
话不多说,直接上车~
变量
代码1:
public class Test02 {
//常量,常量一般大写
public static final int A = 10;
//静态变量,被static修饰
public static short B = 10;
public static short E ;
//成员变量
public long C = 10;
public long F;
public static void main(String[] args) {
//局部变量
int D = 0;
int G = 0;
Test02 test02 = new Test02();
System.out.println("常量A="+A);
System.out.println("静态变量B="+B);
System.out.println("实例变量C="+test02.C);
System.out.println("局部变量="+D);
System.out.println("静态变量默认值E="+E);
System.out.println("实例变量F="+test02.F);
}
}
问题1:
- 变量有几种?相互之间有什么区别?
知识点1:
变量:变量是可变的量。使用变量是为了在虚拟机内存中开辟出一块空间用于存储数据的。
JAVA中的变量共有三种类型。
- 静态变量:类之内,在方法体之外,被static 关键字修饰的成员变量就是静态变量。存在堆中(不同的JDK存放的位置不同,要看你的JDK是什么版本)。
- 成员/实例变量:类之内,方法体之外的变量。存在堆中。
- 局部变量:存在于方法体的变量,存在栈中。
面试题:三种变量 有什么区别?
1.调用方式不同:静态变量可以使用类名调用,也可以适用对象名调用。
实例变量只能通过对象名调用。
2.存在位置不同:静态变量存在方法区中。(和JDK版本有关)
实例变量存在堆内存中。
局部变量存在栈内存中。
3.生命周期不同:静态变量伴随类始终,从类的加载到类的卸载。
实例变量伴随对象始终。
局部变量是从声明位置开始到”}”为止
4.使用方式不同:静态变量和实例变量使用前可以不用初始化,会赋默认值。
局部变量必须初始化。
常量:数值不变的量。被 static final 修饰,存在方法区中。
基本数据类型
代码2:
public class Test03 {
//byte
public byte aByte;
public static byte aByte01;
//short
public short aShort;
//int
public int anInt;
//long
public long aLong;
//float
public float aFloat;
//double
public double aDouble;
//char
public char aChar;
//boolean
public boolean aBoolean;
public static void main(String[] args) {
double l = 90.00;
double l1 = 90.00d;
float f = 90.0f;
long l0 = 10L;
char c = 'C';
Test03 test03= new Test03();
System.out.println("byte默认值"+test03.aByte+"大小"+" "+ Byte.SIZE+" "+"范围"+Byte.MIN_VALUE+"---"+Byte.MAX_VALUE);
System.out.println("short默认值"+test03.aShort+"大小"+" "+ Short.SIZE+" "+"范围"+Short.MIN_VALUE+"---"+Short.MAX_VALUE);
System.out.println("int默认值"+test03.anInt+"大小"+" "+ Integer.SIZE+" "+"范围"+Integer.MIN_VALUE+"---"+Integer.MAX_VALUE);
System.out.println("long默认值"+test03.aLong+"大小"+" "+ Long.SIZE+" "+"范围"+Long.MIN_VALUE+"---"+Long.MAX_VALUE);
System.out.println("float默认值"+test03.aFloat+"大小"+" "+ Float.SIZE+" "+"范围"+Float.MIN_VALUE+"---"+Float.MAX_VALUE);
System.out.println("double默认值"+test03.aDouble+"大小"+" "+ Double.SIZE+" "+"范围"+Double.MIN_VALUE+"---"+Double.MAX_VALUE);
System.out.println("char默认值"+test03.aChar+"大小"+" "+ Character.SIZE+" "+"范围"+Character.MIN_VALUE+"---"+Character.MAX_VALUE);
System.out.println("boolean默认值"+test03.aBoolean);
}
}
问题2:
- 基本数据类型中哪种数据类型默认值会有问题?
- 基本数据类型中的占几个字节?最大最小值是多少?
知识点2:
整数:
注意事项: long后边需要加上L或l
float后边必须加f
double后边可以加D或不加
浮点数:
注意事项: float后边必须加f
double后边可以加D或不加
字符型:
注意事项: 字符型的默认值是不定的。
声明时使用英文单引号,只能有一个字符。
布尔型:
修饰符
代码3:
public class Test04 {
public int A = 0;
protected int B = 1;
int C = 2;
private int D =3;
public int add(int a,int b){
return a+b;
}
protected int add01(int a,int b){
return a+b;
}
int add03(int a,int b){
return a+b;
}
private int add04(int a,int b){
return a+b;
}
public static void main(String[] args) {
Test04 test04 = new Test04();
System.out.println(test04.add(3,5));
System.out.println(test04.add01(3,5));
System.out.println(test04.add03(3,5));
System.out.println(test04.add04(3,5));
}
}
问题:
- 四种修饰符能够用在哪里?
- 修饰符的作用是什么?
知识点3
java语言提供了很多修饰符,主要分为以下两类:
- 访问修饰符
- 非访问修饰符
访问控制修饰符 :
- public : 对所有类可见。使用对象:类、接口、变量、方法。
主类必须要有public 否则解释器不能够运行。
- protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
- default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。
非访问控制修饰符 :
为了实现一些其他的功能,Java 也提供了许多非访问修饰符。例如:
1.atic 修饰符,用来修饰类方法和类变量。
2.final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
3.abstract 修饰符,用来创建抽象类和抽象方法。
4.nchronized 和 volatile 修饰符,主要用于线程的编程。
总结: Java中的变量主要是为了存储数据的,在内存的不同位置。
数据的类型又分为基本数据类型和引用数据类型。
修饰符用来定义类、方法或者变量,通常放在语句的最前端。
最后:祝大家都是能够做一个孤勇者~~~