Java两大数据类型
一、内置数据类型
二、引用类型
引用类型指向一个对象,指向对象的变量是引用变量。引用变量声明是被指定为一个特定的类型,一旦声明后,类型就不能改变了。
对象、数组都是引用数据类型。
引用数据类型默认值为null。
Java常量
常量在程序运行时不能被修改。通常用大写字母来表示常量,用 final 关键字来修饰。
数据类型转换
整型、常量和字符型数据可以混合运算。不同类型数据转换为同一类型再运算,由低到高转换。
低------------------------------------------------------>高
byte,short,char -> int -> long -> float -> double
转换规则
1. Boolean不能转换
2. 对象类型不能转换为不相关类的对象
3. 容量大的类型转换为容量小的类型需使用强制类型换换
4. 转换可能导致溢出或损失精度
5. 浮点数到整数是舍弃小数得到的
自动数据类型转换
满足转换前数据类型位数要低于转换后数据类型位数
强制类型转换
转换的数据类型必须是兼容的
int a = 123;
byte b = (byte)a;//将a强制转换为byte类型
变量类型
在Java中,所有变量使用前必须声明。
前言:static、final、public、private概念解读
访问权限修饰符
public和private是访问权限修饰符,用于控制外界对类内部成员的访问
public:表明对象成员是完全公有的,外界可以随意访问
private:表明对象成员是完全私有的,不容许外界的任何访问。
类成员变化修饰符
static和final是控制类成员变化的修饰符
static:静态成员修饰符,其修饰的静态变量被所有的对象共享,在内存中只存在一份,一个对象对它进行修改后,其他对象访问也会被修改。static修饰的静态成员不存在多态性。
final:final用来修饰方法和属性表示特殊的意义。修饰方法时表示方法不能被重写;修饰属性时表示属性不能被改变,这里属性又分为对象和基本类型,修饰基本类型表示基本类型赋值以后不能再被赋值,修饰对象表示这个属性不能再指向其他对象(引用不变),但是他指向的这个对象本身还是可以被改变的。final不能用于修饰构造方法。
一、类变量
也称静态变量,独立于方法和语句块之外,用static修饰
无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
静态变量存储在静态存储区,经常被生命为常量,很少单独使用static声明变量。常量是指声明为public/private,final和static类型的变量。
可通过ClassName.VariableName方式访问。
类变量被生命为public static final类型时,名称一般建议使用大写字母。
public class Dog{
//静态私有变量
private static double length;
//常量
public static final String TYPE = '哈士奇';
public static void main(String[] args){
length = 1.5;
System.out.println(TYPE + '平均长度:'+length);
}
}
//在类外可以通过Dog.length来访问
二、成员变量
也称实例变量,在类中声明,在方法、构造方法和语句块之外。
在对象被创建的时候创建,对象被销毁的时候销毁。
实例变量可以声明在使用前或使用后。
访问修饰符可以修饰实例变量。
实例变量对于类中的方法、构造方法和语句块可见。一般应把实例变量设置为私有。通过使用访问修饰符可以使实例变量对子类可见。
public class Employee{
// 这个实例变量对子类可见
public String name;
// 私有变量,仅在该类可见
private double salary;
//在构造器中对name赋值
public Employee (String empName){
name = empName;
}
//设定salary的值
public void setSalary(double empSal){
salary = empSal;
}
// 打印信息
public void printEmp(){
System.out.println("名字 : " + name );
System.out.println("薪水 : " + salary);
}
public static void main(String[] args){
Employee empOne = new Employee("RUNOOB");
empOne.setSalary(1000);
empOne.printEmp();
}
}
三、局部变量
声明在方法、构造方法或语句块中,当他们执行的时候创建,执行完成后变量被销毁。
访问修饰符不能修饰局部变量。
局部变量是在栈上分配的。
局部变量没有默认值,被声明后必须经过初始化才能使用。
Public class Dog{
public void getAge(){
//局部变量age,初始化后才能使用
int age = 0; age+=7;
System.out.println('年龄'+age);
}
}