Eclipse中内容辅助键的使用
-
A:Alt+/ 起提示作用
-
B:main+alt+/,syso+alt+/,给出其他提示
-
C:补充输出语句,选中需要输出的部分,alt+/选择最后一项即可
-
C:定义自己的alt + /
- windows–perference-Java-Editor-Templates–New
-
A:新建 ctrl + n
-
B:格式化 ctrl+shift+f
-
C:导入包 ctrl+shift+o
-
D:注释 ctrl+/,ctrl+shift+/,ctrl+shift+\
-
E:代码上下移动 选中代码alt+上/下箭头
-
F:查看源码 选中类名(F3或者Ctrl+鼠标点击)
-
G:查找具体的类 ctrl + shift + t
-
H:查找具体类的具体方法 ctrl + o
-
I:给建议 ctrl+1,根据右边生成左边的数据类型,生成方法
-
J:删除代码 ctrl + d
-
K:抽取方法alt + shift + m
-
L:改名alt + shift + r
Eclipse中如何提高开发效率
- alt + shift + s
- A:自动生成构造方法
- B:自动生成get/set方法
Eclipse中如何生成jar包并导入到项目中
- A:jar是什么?
- jar是多个class文件的压缩包。
- B:jar有什么用?
- 用别人写好的东西
- C:打jar包
- 选中项目–右键–Export–Java–Jar–自己指定一个路径和一个名称–Finish
- D:导入jar包
- 复制到项目路径下并添加至构建路径。
Object类的概述
- A:Object类概述
- 类层次结构的根类
- 所有类都直接或者间接的继承自该类
- B:构造方法
- public Object()
- 子类的构造方法默认访问的是父类的无参构造方法
- A:
- public int hashCode()
- a:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
- b:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
- A:
- public final Class getClass()
- a:返回此 Object 的运行时类。//对象字节码文件
- b:可以通过Class类中的一个方法,获取对象的真实类的全名称。
- public String getName()
- A:
- public String toString()
- a:返回该对象的字符串表示。
public Stirng toString() {
return name + "," + age;
}
* b:它的值等于:
* getClass().getName() + "@" + Integer.toHexString(hashCode())
* c:由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。
- B:最终版
- 自动生成
打印对象引用 默认调用toString()方法 方便显示 sout(s)
- 自动生成
Object类的equals()方法
* a:指示其他某个对象是否与此对象“相等”。
* b:默认情况下比较的是对象的引用是否相同。
* c:由于比较对象的引用没有意义,一般建议重写该方法。
==号和equals方法的区别
- ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
- equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性
package objectEquals;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Objects;
class Employee
{
private String name;
private double salary;
private Date hireDay;
public Employee(String name, double salary, int year,int month,int day) {
this.name = name;
this.salary = salary;
GregorianCalendar calendar=new GregorianCalendar(year,month-1,day);
//0代表一月
hireDay=calendar.getTime();
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public Date getHireDay() {
return (Date) hireDay.clone();
}
public void raiseSalary(double byPercent)
{
double raise=salary*byPercent/100;
salary+=raise;
}
public boolean equals(Object otherObject)
{
if(this == otherObject) return true;
if(this == null) return false;
if(this.getClass() != otherObject.getClass()) return false;
//不写this也行
//现在可以确认otherObject指向一个不空的 Employee对象
Employee other = (Employee) otherObject;
//测试是否域值相同
return Objects.equals(name, other.name)
&& salary==other.salary
&& Objects.equals(hireDay, other.hireDay);
// Objects.equals(a,b) 如果两个参数为null 返回true
// 一个null返回false 都不为null返回a.equals(b)
}
public int hashCode()
{
return Objects.hash(name,salary,hireDay);
}
public String toString()
{
return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hireday=" + hireDay +"]";
}
}
package objectEquals;
public class Manager extends Employee {
private double bonus;
public Manager(String name, double salary, int year, int month, int day) {
super(name, salary, year, month, day);
bonus = 0;
}
public double getSalary()
{
return super.getSalary()+bonus;
}
public void setBonus(double b)
{
bonus = b;
}
public boolean equals(Object otherObject)
{
if(!super.equals(otherObject)) return false;
//先检测超类的域是否相等
Manager other = (Manager) otherObject;
return bonus == other.bonus;
}
public int hashCode()
{
return super.hashCode()+17* new Double(bonus).hashCode();
}
public String toString()
{
return super.toString()+"[bonus=" + bonus + "]";
}
// 如果子类有自己相等概念 对称性需求 强制采用getClass检测
// 超类决定相等概念 用instanceof检测
// 雇员经理
// 经理经理 getClass
}
package objectEquals;
public class EqualsTest {
public static void main(String[] args) {
Employee alice1 = new Employee("Alice Adams", 75000, 1987, 12, 15);
Employee alice2 = alice1;
Employee alice3 = new Employee("Alice Adams", 75000, 1987, 12, 15);
Employee bob = new Employee("Bob Brandson", 50000, 1989, 10, 1);
System.out.println("alice1 == alice2: "+ (alice1 == alice2));
System.out.println("alice1 == alice3: "+ (alice1 == alice3));
System.out.println("alice1.equals(alice3):" + alice1.equals(alice3));
System.out.println("alice1.equals(bob):" + alice1.equals(bob));
System.out.println("bob.toString():" + bob);
// alice1 == alice2: true
// alice1 == alice3: false
// alice1.equals(alice3):true
// alice1.equals(bob):false
// bob.toString():objectEquals.Employee[name=Bob Brandson,salary=50000.0,hireday=Sun Oct 01 00:00:00 CST 1989]
Manager carl = new Manager("Carl Craker",80000,1987,12,15);
Manager boss = new Manager("Carl Craker",80000,1987,12,15);
boss.setBonus(5000);
System.out.println("boss.toString():"+boss);
System.out.println("carl.equals(boss):" + carl.equals(boss));
System.out.println("alice1.hashCode():"+alice1.hashCode());
System.out.println("alice3.hashCode():"+alice3.hashCode());
System.out.println("bob.hashCode():"+bob.hashCode());
System.out.println("carl.hashCode():"+carl.hashCode());
// boss.toString():objectEquals.Manager[name=Carl Craker,salary=80000.0,hireday=Tue Dec 15 00:00:00 CST 1987][bonus=5000.0]
// carl.equals(boss):false
// alice1.hashCode():-1252606650
// alice3.hashCode():-1252606650
// bob.hashCode():-223951770
// carl.hashCode():1767051952
}
}
参数可变的方法
package haha;
class test
{
public static void dealArray(int...intArray)
{//可变参数类型必须作为参数列表的最后一项,而不能放在定长参数的前面。
for (int i : intArray) {
System.out.print(i+" ");
}
System.out.println();
}
public static void main(String[] args)
{
//编译器转化参数为数组形参
dealArray();//dealArray(int[] intArray{});
dealArray(1);//dealArray(int[] intArray{1});
dealArray(1,2,3);//dealArray(int[] intArray{1, 2, 3});
//可以是空参 可以不定
//能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的。
枚举类
package haha;
import java.util.Scanner;
import java.util.*;
public class EnumTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a size: (SMALL, MEDIUM, LARGE, EXTRA_LARGE) ");
String input = in.next().toUpperCase();
Size size = Enum.valueOf(Size.class, input);
System.out.println("size=" + size);
System.out.println("abbreviation=" + size.getAbbreviation());
if (size == Size.EXTRA_LARGE)
System.out.println("Good job--you paid attention to the _.");
}
}
enum Size {
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private Size(String abbreviation) {
this.abbreviation = abbreviation;
}
public String getAbbreviation() {
return abbreviation;
}
private String abbreviation;
}