一、java修饰符和使用场景
修饰符是用来定义类、方法或者变量的访问权限,分为两大类:
-
访问修饰符:
限定类、属性、方法是否可以被程序里其他部分访问和调用。
private<default<protect<public
-
非访问修饰符,用来修饰或者辅助:
例如static、final、abstract、synchronize等
主要记住:
-
外部类修饰符:public或者默认
-
方法、属性修饰符:private、default、protected、public
-
public公开对外部可见
-
protected对包和子类可见
-
private仅对类内部可见
-
修饰符 | 当前类 | 同一包内 | 不同包中的子类 | 不同包中的非子类 |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
default | Y | Y | N | N |
private | Y | N | N | N |
二、JAVA内置的数据类型简介
-
八种基本数据类型(每个数据都需要从计算机中申请空间来存储数据)
-
byte
-
8位
-
最大127,最小-128
-
节省空间,占用int类型的四分之一
-
默认值:0
-
-
short
-
16位
-
最大32767,最小-32768
-
int类型的二分之一
-
默认值:0
-
-
int
-
32位
-
最小-2147483648,最大2147483647
-
整数默认是int类型
-
默认值:0
-
-
long
-
64位
-
最小-9223372036854774808,最大9223372036854774807
-
默认值:0L
-
-
float
-
单精度32位
-
0.0f
-
-
-
双精度64位
-
浮点数默认double类型
-
默认值0.0d
-
-
boolean
-
一位
-
true或者false
-
默认是false
-
-
char
-
16位的Unicode字符,两个字节代表一个字符
-
最小u0000即0,最大ufff即65535
-
-
类型转换
-
double>float>long>int>short>byte
-
小转大可以直接转换,而从大到小需要强制转换,会有精度丢失
-
-
-
引用数据类型:Class创建的对象或者数组都是引用数据类型
-
三、java类里面的变量类型
-
类变量(静态变量):
-
使用static声明的变量,可以直接使用类名.变量名(变量名称一般大写)访问
-
一个类不管创建了多少个对象,类只拥有类变量的一份拷贝,数值默认为0,布尔值默认值为false,引用类型默认值是null
-
生命周期
-
在第一次被访问时创建,在程序结束时销毁
-
-
声明public类型,一般这样声明public static final
-
存储在方法区,和堆栈不一样的一个空间
1 package study2day; 2 3 public class Student { 4 public static String PREFIX = "我是"; 5 6 } 7 8 public static void main(String [] args){ System.out.println(Student.PREFIX); 9 }
-
-
实例变量(属性):
-
需要使用对象.变量名才可以访问
-
对象被实例化之后,实例变量的值就跟着确定,可以赋值,也可以默认。
-
生命周期
-
在对象创建的时候创建,在对象被销毁的时候销毁
-
-
访问修饰符可以修饰实例变量,一般是私有的,private修饰,然后通过方法或者实例进行修改
private int age; private String name; public int getAge(){ return age; } public void setAge(int age){ this.age =age; } public String getName(){ return name; } public void setName(String name){ this.name = name; }
-
-
局部变量
-
方法中的变量
-
声明在方法、构造方法、语句块、形式参数等
-
生命周期
-
当它们执行完后,变量会被销毁
-
-
访问修饰符不能用于局部变量
-
局部变量没有初始值,必须初始化后才可以被禁用
public String introduce(){ String content = PREFIX + name + ",年年龄是" + age; return content; } public static void main(String [] args){ Student student = new Student(); student.setAge(20); System.out.println(student.getAge()); student.setName("小墨"); System.out.println(student.getName()); System.out.println(student.introduce()); }
结果:
20
小墨
我是小墨,年年龄是20