小知识
快捷键积累
Ctrl + D 复制当前行到下一行
Ctrl + 鼠标左键对准需要查看的类 进入该类的源码
100.for + 回车
等于
for (i=0;i<100;i++){
}
前提:先打断点
Shift + F9 进入debug
F7 跳至下一步
增强for 循环 快捷方式 : 数组名.for +回车
自制 Shift 和 + (取代Alt+Insrrt)
![]()
Alt + Insert get/set 方法快捷键
Alt + Insert 构造器快捷键
Alt Insert 选择Override Methods 重写快捷键
Ctrl + O 重写快捷键
自制 Ctrl+Shift+S 快速进入设置(取代Ctrl + Alt + S)
![]()
Ctrl + Alt + S 快速进入设置
SHFIT + F6 修改类名
SHFIT + F6 +选中需要修改的单词 可以批量修改代码中重复出现的单词
选中要捕获异常的代码 Ctrl +Alt +T 捕获异常快捷键
1.参数的传递
(1)实参传递:可以是实际的数;也可以是赋了值的变量名(普通变量/数组变量)
若int a=1; int a=sc.nextInt; int[ ] arrays={1,2,3,4}
则传参 要调用的方法名 (1) ; 要调用的方法名(a) ; 要调用的方法名(arrays)都可以
(2)形参规定写法:变量类型 变量名(可以按需求取名也可使用同一个) 但变量类型必须要与将传递进来的实参类型一致
方法名(int a) 方法名(int[ ] arrays) 都可以 解释:int [ ] 是数组类型
2.了解break,contiue;goto
代码见真知
运行结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 我是Vis.Yang
运行结果
1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49
了解goto
老规矩看代码😎
运行结果
101 103 107 109 113 127 131 137 139 149
3.static
一句话总结:非静态的属性和方法不能直接通过类名访问
方法中未加static,则必须New对象才能使用 必须!
一个个类实质上就是一个个对象
方法中加了static,那么既可以New对象使用
1.空(void) 对象.方法名(有参放参);
2.非空 变量类型 变量名(按需取名) =对象.方法名(有参放参);
方法中加了static,那么也可以不New对象使用
1.类名.方法名(有参放参);
在他处使用非本类写的加了static的方法
1.使用非本类的类名.方法名(有参放参);
2.或者New对象 对象.方法名(有参放参);
看代码😍
在他处使用非本类写的未加static的方法
必须New对象 (实例化他类) 使用对象.方法名(有参放参);
实例化:
对象类型 对象名 =对象值
看代码😀
本处类里写本处方法加static
1.可直接调用 方法名(有参放参) ;
2.也可加上本处类名 类名.方法名(有参放参);
3.还可以New对象 对象.方法名(有参放参);
本处类里写本处方法未加static
1.不可可直接调用 必须New对象 对象.方法名(有参放参);
4.return放哪?
必须在方法语句的括号的末括号上面
示例
5.多维数组
静态初始化
动态初始化
6.多维数组遍历
数组里外长度一致(行列数相同) 两种都可以,不会数组下标越界
普通for循环1 (容易出bug) 要细!
普通for循环2(采用这种就不会有问题) 少bug
数组里外长度不等(行列数不相同) 这样使用自然会数组下标越界 要细! 重要!
增强for循环(省略按下标遍历)
深入main方法
main方法是用于启动程序的,其实真正一个程序只有一个main方法,并不会像我们测试的那样,每个类里都有一个main方法,只是为让我们执行代码的时候方便
创建对象内存分析
访问修饰符
继承的类可直接使用父类get方法获得值
package com.demo.rj0315;
public class A {
private String name;
private String id;
private double salary;
public A() {
super();
}
public A(String name, String id, double salary) {
super();
this.name = name;
this.id = id;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public void work() {
System.out.println("name=" + name + "id=" + id + "salary=" + salary);
}
@Override
public String toString() {
return "A [name=" + name + ", id=" + id + ", salary=" + salary + "]";
}
} 自动生成继承类的满参构造方法
package com.demo.rj0315;
public class B extends A {
private int bonus;
public B() {
super();
}
public B(String name, String id, double salary, int bonus) {
super(name, id, salary);
this.bonus = bonus;
}
public int getBonus() {
return bonus;
}
public void setBonus(int bonus) {
this.bonus = bonus;
}
@Override
public void work() {
System.out.println("name=" + getName() + "id=" + getId() + "salary=" + getSalary() + "bonus" + bonus);
}
@Override
public String toString() {
return "B [ name=" + getName() + "," + " id=" + getId() + ", " + "Salary=" + getSalary()
+ "bonus=" + bonus + "]";
}
} package com.demo.rj0315;
public class Test {
public static void main(String[] args) {
A a = new A();
a.setName("xxx");
a.setId("123");
a.setSalary(20.0);
a.work();
System.out.println(a.toString());
B b = new B();
b.setName("xx");
b.setId("1234");
b.setSalary(30.0);
b.setBonus(50);
b.work();
System.out.println(b.toString());
}
} 运行结果: name=xxxid=123salary=20.0 A [name=xxx, id=123, salary=20.0] name=xxid=1234salary=30.0bonus50 B [ name=xx, id=1234, Salary=30.0bonus=50]
查看1道真题和解析