class MyClass { public static void main(String[] args){ //整形 byte(1) short(2) int(4) long(8) //浮点 float(4) double(8) //字符 char(2) //布尔 boolean(1) //变量定义必须赋值才可以使用)整形默认是int 浮点默认是double 定义long 加L 定义float 加F) //当数据类型不一样,将会发生数据类型转换: // 1、自动类型转换(隐式) // 1、特点:数据范围从小到大(赋值左边的类型范围大于右边(float范围大于long)) // 2、强制类型转换(显式) // 1、特点:数据范围从大到小(赋值左边的类型范围小于右边(float范围大于long))并且值没有超过范围 //byte/short/char 运算时会自动转化为int 定义时没有超过其范围则java编译器会自动加(byte) byte bb=40;(40默认是int byte bb=(byte)40;) i Integer age=10; System.out.println(age); System.out.println(12); System.out.println(-3.14); System.out.println('A'); System.out.println(true); { int num=30; } int num=(int)20L; System.out.println(num); float num2=30L;//自动转换 System.out.println(num2);//30.0 int num3=(int)3.56;//强制类型转换 System.out.println(num3);//3 byte num4=12; byte num5=23; int ret=num4+num5;//byte/short/char 运算时会自动转化为int 常量运算是可以的 byte bb1=4+8; System.out.println(ret); printObj(true); } public static void printObj(Object obj){ System.out.println(obj.toString()); } }
//switch 用的数据类型 基本类型:byte/short/int/char 引用类型:String Enum
方法的重载 方法名相同 参数列表不同(参数类型 参数多类型顺序 参数个数有关)与返回值 参数名称无关
java的内存划分成为5个部分:
一、栈:存放方法中的局部变量
1、局部变量:方法参数或是方法{}内部的变量,有相应用作用域(一旦超出作用域立刻从栈内存中消失)
二、堆:凡是new出来的都在堆中,堆内存里的东西都有一个地址值:16进制
堆内存里的数据,都有默认值:整数: 0 浮点:0.0 字符:'u0000' 布尔: false 引用类型:null
三、方法区:存储.class相关信息,包含方法的信息
四、本地方法栈:与操作系统相关
五、寄存器:与CPU相关
数组定义两种方法:动态初始化: int[] intArr=new int[3];
静态初始化:int[] intArr={1,3,4};
继承方法override 1、父子类方法名相同 参数列表也相同 2、子类的方法访问修饰符必须大于等于父类的访问修饰符(public > protected>default>private) 3、子类方法的返回值类型必须小于父类的返回值类型
继承构造方法:子类new时(默认无参构造函数)会默认先调用父类默认无参构造函数(若父类写了一个在参的构造函数则子类构造方法必须在第一行调用父类有参的构造函数)
接口:1、成员变量 默认是public static final 并必须赋值 2、抽象方法 3、静态方法(jdk8 public static 有方法体直接可以通过接口名调用) 4、默认方法(jdk8 public default有方法体 默认会继承到实现类中所有实现类可以重写) 5、私有方法(jdk9 private static 只可以在接口内使用实现类不可以使用)
多态:左父=右子 成员变量的访问方法:
1、通过对象访问,左边是谁就用其成员变量,没有则向上找
2、通过成员方法访问成员变量,看方法是属于谁就访问谁的成员的变量
成员方法的访问:编译看左 运行看右
public class User { int num=20; public void show(){ System.out.println(num); } }
public class Student extends User { int num=30; int age=50; public void show(){ System.out.println(num); } public static void main(String[] args) { User user=new Student();//多态左父右子 System.out.println(user.num);//20 多态 访问成员变量 左边是谁就用其成员变量,没有则向上找 Student ss=new Student(); System.out.println(ss.num);//30 System.out.println(ss.age);//40 user.show();//30通过成员方法(没有override) 方法属于谁就调用其成员变量 若override就访问 } }
匿名内部类(接口不用实现类)使用时不用实现接口的一个类直接在方法中new 接口名{实现接口的方法(与其接口实现类中的一样)}