基础
数据类型
基本数据类型
// 如果希望一个字面量被当作long类型,需加L/l,否则默认int
long a = 123456789789789L;
// 同理,想要float要在最后加F/f,否则默认double
float b = 98.5F;
引用数据类型
数组
声明
int[] arr = {12,24};
int[] arr = new int[3]; // 初始化为0
自动类型转换
- 类型范围小的变量可以直接赋值给类型范围大的变量
- 在表达式中,小范围的数据类型变量会自动转换成当前范围较大的类型,即表达式的最终结果由表达式中的最高类型决定;在表达式中,byte、short、char是直接转换成int参与运算的
- 大范围赋值给小范围的强制类型转换
int a = 20;
byte b = (byte)a;
方法
修饰符 返回值类型 方法名(形参列表){ // 无返回值为void
方法体代码
return 返回值;
}
- 参数为值传递:不会修改原值
- 参数为引用传递:传递的是地址,会改变原值(类、接口、数组、字符串、包装类)
方法重载
同一个类中,出现多个方法名称相同,但是形参列表不同的,就是方法重载(为同一个方法指定多种参数模式)
优化:
面向对象
面向对象的三大特征:封装、继承、多态
类
public class 类名{
1.成员变量
2.成员方法
3.构造器
4.代码块
5.内部类
}
public class Car{
// 属性(成员变量)
String name;
double price;
//行为(方法)
public void start(){
System.out.println(name + "启动");
}
public void run(){
System.out.println("价格" + price);
}
}
// 调用
// 类 变量名称 = new 构造器;
Car c = new Car();
c.name = "car";
c.start();
注意事项
- 类名要首字母大写+驼峰
- 一个Java文件可以定义多个class类,但是只有一个类是public修饰,且public修饰的类名必须成为文件名。
- 成员变量的完整定义格式为
// 修饰符 数据类型 变量名 = 初始值
// 通常我们不会赋初始值,会自动有默认值
byte short int long 0
double float 0.0
boolean false
String等引用类型 null
内存机制
- 对象放在堆内存中
Car c = new Car();
c变量中存储的是对象地址- 成员变量在堆内存中,方法在方法区中
构造器
定义在类中,可以用于初始化一个类的对象,并返回对象的地址
new Car()
中的Car()
就是一个构造器
this关键字
可以出现在构造器、方法中;代表当前对象的地址(对象或方法中的this都指向对象地址)
封装
对象代表什么,就得封装对应的数据,并提供数据对应的行为
例如人画圆,创建一个人对象、创建一个圆对象、其中画圆这个方法,应该封装到圆对象中
- 一般建议对成员变量使用private关键字修饰
- 为每个成员变量提供public修饰的getter和setter方法暴露其取值和赋值
javabean格式
- 成员变量使用private修饰
- 提供成员变量对应的setter和getter
- 必须提供一个无参构造器;有参构造器可写可不写
public class User {
// 1.私有变量
private String name;
private double height;
// 3.要求提供无参构造器,有参构造器可选
public User() {
}
public User(String name, double height, double salary) {
this.name = name;
this.height = height;
}
// 2.提供getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
成员变量和局部变量区别
成员变量
public class User {
private String name;
private double height;
}
局部变量
public class User {
public static void main(String[] args) {
double score = 100;
}
}
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中,方法外 | 常见于方法中 |
初始化值不同 | 有默认值,无需初始化 | 没有默认值,使用前要先赋值 |
内存位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象创建而存在,随对象消失而消失 | 随着方法调用而存在,随着方法结束而消失 |
作用域 | 在归属的大括号中 |