标签:imp 链式 extends 启动 检查 intval main 转换 直接
public class Person {
private String name;
private int age;
// 构造方法1
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 构造方法2
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name.trim();
}
public int getAge() {
return this.age;
}
}
方法重载(overload)是指:
public class Hello() {
public void hello(String) {}
public void hello(int age) {}
public void hello(String name, int age) {}
public void hello(int age, String name) {}
}
public class Person {
private String name;
protected int age;
}
public class Student extends Person {}
public class Person {
public Person(String name) {
System.out.println("create Person: " + name);
}
}
public class Student extends Person {
public Student(String name) {
super(name);
System.out.println("create Student: " + name);
}
}
判断实例p是否属于Person类
System.out.println(p instanceof Person); //true
如果一个class定义了方法, 但没有具体执行代码, 这个方法就是抽象方法
无法实例化的抽象类有什么作用?
注意: 从抽象类继承的子类必须实现抽象方法, 如果不实现抽象方法, 则该类仍然是一个抽象类
// 父类
public abstract class Person {
public abstract void run();
public void hello() {
System.out.println("hello world");
}
}
// 子类
public class Student extends Person{
public Student(String name) {
super();
System.out.println("create Student: " + name);
}
@Override
public void run() {
System.out.println("Student running");
}
public static void main(String[] args) {
Student student = new Student("lingjing");
student.run();
student.hello();
}
}
如果一个抽象类没有字段, 所有方法都是抽象方法, 就可以把该抽象类改成成接口(interface)
抽象类和接口对比:
abstract class | Interface | |
---|---|---|
继承 | 只能extends一个class | 可以implements多个interface |
字段 | 可以定义实例字段 | 不能定义实例字段 |
抽象方法 | 可以定义抽象方法 | 可以定义抽象方法 |
非抽象方法 | 可以定义非抽象方法 | 可以定义default方法 |
static 修饰字段就是静态字段
Person person = new Person(); person.number
Person.number
public class Person {
public static int number = 100;
}
用static修饰的方法称为静态方法
Person person = new Person(); person.run()
Person.run()
classpath是一个环境变量, 指示JVM在启动程序的时候在什么路径下去搜索相关的类
例如:
java -classpath /usr/bin;/data/servers/hadoop/bin com.longfor.Hello
#或者
java -cp /usr/bin;/data/servers/hadoop/bin com.longfor.Hello
这样JVM在加载com.longfor.Hello这个类的时候, 一次查找
在某个路劲在找到, 就不在继续搜索, 如果没有找到, 就会报错
classpath的设定方法:
推荐使用:
java -classpath /usr/bin;/data/servers/hadoop/bin com.longfor.Hello
#或者
java -cp /usr/bin;/data/servers/hadoop/bin com.longfor.Hello
如果没有设置环境变量, 也没有设置-cp参数, 默认的classpath为. 及当前目录
jar包是zip格式的压缩文件, 包含若干.class文件
使用jar可以避免大量的目录和.class文件
jar的其他动能
jdk的class
示例:
jt0101020164:hadooptest lingjing$ tree META-INF/
META-INF/
└── MANIFEST.MF
jt0101020164:hadooptest lingjing$ cat META-INF/MANIFEST.MF
Manifest-Version: 1.0
Main-Class: com.longfor.Main
X-Copyright: blablabla...
X-Build-Version: 1.0
StringBuilder sb = new StringBuilder(1024);
String s = sb.append("ajing")
.append(name)
.append("!")
.insert(0, "hello, ")
.toString();
String s1 = "hello " + name + "!";
int <———>Integer
public class Integer {
private int value;
public Integer(int value) {
this.value = value;
}
}
定义一个Integer类, 包含一个实例字段int, 可以把Integer视为int的包装类型
JDK为各种基本类型都创建了对应的包装类型
基本类型 | 对应的引用类型 |
---|---|
boolean | Boolean |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
编译器可以自动在int和Integer直接转型
Integer n = 99;
int i = n;
Integer s = i + n;
// Integer s = Integer.valueof(i + n.intValue());
包装类型定义了一些有用的静态变量
Boolean.TRUE
Boolean.FALSE
Integer.MAX_VALUE; //2147483647
Integer.MIN_VALUE; //-2147483648
标签:imp 链式 extends 启动 检查 intval main 转换 直接
原文地址:https://www.cnblogs.com/lingshang/p/10976744.html