IDEA常用快捷键
万能提示:Alt + 回车
使用xx块环绕:Ctrl + Alt + T
向下插入一行: Shift + 回车
向上插入一行:Ctrl + Alt + 回车
复制行:Ctrl + D
删除行:Ctrl + Y
单行注释:Ctrl + /
多行注释:Ctrl + Shift + /
搜索: Ctrl + n
类的定义
public class Person {
//成员变量
String name;//姓名
int age;//年龄
boolean isMarried;
public void walk(){
System.out.println("人走路...");
}
public String display(){
return "名字是:" + name + ",年龄是:" + age + ",Married:" + isMarried;
}
}
对象的创建
class Student{ //一个文件中只能有一个public类
}
public class TestStudent{
//Java程序的入口
public static void main(String[] args){
//对象名中存储的是对象的地址
System.out.println(new Student());//Student@7852e922
Student stu = new Student();
System.out.println(stu);//Student@4e25154f
int[] arr = new int[5];
System.out.println(arr);//[I@70dea4e
}
}
成员变量
成员变量的分类
- 成员变量分为实例变量和类变量
- 实例变量也叫对象属性,是属于某个对象的,通过对象来调用
- 类变量是属于整个类的,用static修饰,通过类名直接调用
实例变量的内存图
class Student{
String name;
char gender = '男';//显式赋值
}
class TestStudent{
public static void main(String[] args){
Student s1 = new Student();
System.out.println("姓名:" + s1.name);//null
System.out.println("性别:" + s1.gender);//男
s1.name = "小薇";
s1.gender = '女';
System.out.println("姓名:" + s1.name);//小薇
System.out.println("性别:" + s1.gender);//女
Student s2 = new Student();
System.out.println("姓名:" + s2.name);//null
System.out.println("性别:" + s2.gender);//男
}
}
实例变量和局部变量的区别
- 定义的位置不同
- 实例变量:类中,方法外
- 局部变量:方法中或者方法声明上
- 作用范围不一样
- 实例变量:类中
- 局部变量:当前方法的作用域中
- 初始化值不同
- 实例变量:有默认值
- 局部变量:没有默认值,必须先定义,赋值,后使用
- 在内存中的位置不同
- 实例变量:堆内存
- 局部变量:栈内存
- 生命周期不同
- 实例变量:随着对象的创建而存在,对象的小时而消失
- 局部变量:随着方法的调用而存在,方法调用完即消失
成员变量的练习
public class Field_Demo4 {
public static void main(String[] args) {
//创建丈夫对象
Husband husband = new Husband();
//创建妻子对象
Wife wife = new Wife();
//指定属性
husband.name = "邓超";
wife.name = "孙俪";
husband.wife = wife;
wife.husband = husband;
System.out.println("丈夫:" + husband.name + ",他妻子是:" + husband.wife.name);
System.out.println("妻子:" + wife.name + ",他丈夫是:" + wife.husband.name);
}
}
class Husband{
String name;
Wife wife;
}
class Wife{
String name;
Husband husband;
}
成员方法
形参
- 方法定义时的参数
实参
- 方法调用时的参数
class Count {
/*
定义计算两个整数和的方法
返回值类型,计算结果是int
参数:不确定数据求和,定义int参数.参数又称为形式参数
*/
public int getSum(int a, int b) {
return a + b;
}
/*
定义计算两个整数差的方法
返回值类型,计算结果是int
参数:不确定数据求差,定义int参数.参数又称为形式参数
*/
public int getSubtract(int a, int b){
return getSum(a,-b);//直接返回getSum(a,-b)方法调用的结果作为getSubtract(a,b)的结果
}
}
public class Method_Demo1 {
public static void main(String[] args) {
// 创建对象
Count c = new Count();
// 通过单独调用方式调用方法
c.getSum(3,4);
// 通过输出调用方式调用方法
System.out.println(c.getSum(3,4));
// 通过赋值调用方式调用方法
int sum = c.getSum(3,4);
System.out.println(sum);
}
}
成员方法的练习
打印任意行列数的矩形
public class Method_Exer5 {
public static void main(String[] args) {
//创建对象
PrintUtil pu = new PrintUtil();
//调用printRectangle方法
pu.printRectangle(5, 10, "&");
}
}
class PrintUtil{
public void printRectangle(int line, int column, String sign){
for (int i = 0; i < line; i++) {
for (int j = 0; j < column; j++) {
System.out.print(sign);
}
System.out.println();
}
}
}
声明圆类
public class Method_Exer6 {
public static void main(String[] args) {
//创建对象
Circle c = new Circle();
c.radius = 1.2;
System.out.println(c.getInfo());
}
}
class Circle{
double radius;
public double getArea(){
return 3.14 * radius * radius;
}
public double getPerimeter(){
return 2 * 3.14 * radius;
}
public String getInfo(){
return "半径:" + radius + ",面积:" + getArea() + ",周长:" + getPerimeter();
}
}
方法调用内存分析
class Test18_Invoke_Memory{
public static void main(String[] args){
Count c = new Count();
int x = 1;
int y = 2;
int sum = c.getSum(x,y);
System.out.println(x + " + " + y + " = " + sum);
}
}
class Count{
public int getSum(int a, int b){
return a + b;
}
}