title: Java 基础知识点学习(一)
date: 2019-04-28 13:27:00
tags: java
categories: java
1. Java面向对象基本概念 - 引用
java 语言中除基本类型之外的变量类型都称之为引用类型。
-
java中的对象通常通过引用其操作的。
//声明了一个String类型的引用变量,但是并没有指向对象 String s; //使用new语句创建一个String类型的对象,并用s指向他,以后可以通过s完成对其操作 s = new String("hello world");
2.如何区分类和对象
- 类是静态的概念
- 对象是new出来的,位于堆内存,类的每个成员变量在不同的 对象中都有不同的值,而方法只有一份,执行时才占用。
3.递归调用
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368。
公式: f1= 1,f2=1. fn=f(n-1)+f(n-2)
这个数列从第3项开始,每一项都等于前两项之和。
public static int testFibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
}else {
return test3(n-1) + test3(n-2);
}
}
递归调用示例图:
4.方法重载
方法的重载是指一个类中可以定义相同的名字,但是参数不同的多个方法。调用时,会根据不同的参数选择对应的方法。
示例:
public class Demo{
void info(){
System.out.println("hello world");
}
void info(String t){
System.out.println("hello"+ t);
}
public static void main(String args[]){
Demo d = new Demo();
d.info();
d.info("smallmartial");
}
}
5.this关键字
- 在类的方法定义中使用this关键字代表使用该方法的对象的引用。
- 当必须指出使用当前使用方法的对象是谁时要使用this
- 有时可以用this处理方法中的成员变量和参数的重名
- this可以看作是一个变量,他的值是当前对象的引用
public class Leaf{
int i = 0;
Leaf(int i){
this.i = i ;
}
Leaf increament(){
i++;
return this;
}
void print(){
System.out.println("i"+ i);
}
public static void main(String args[]){
Leaf leaf = new Leaf(100);
leaf.increament().increament().print();
}
}
//result: 102
6.static关键字
- 在类中,用static声明的成员变量为静态成员方法变量,它为该类的公用变量,在第一使用时被初始化,对于该类的对象,static成员变量只用一份。
- 用static 声明的方法为静态方法,在调用时,不会将对象的引用传递给它,所以在static方法中不可以访问非static方法。
- 可以通过对象引用或者类名,访问静态成员。
7.类的继承
Java通过 extends关键字实现类的继承
通过继承子类自动拥有基类的所有成员变量
java只支持单继承,不允许多继承。
-
一个子类只能有一个基类,一个基类可以派生多个子类
父类
public class Animal {
private String name;
private int id;
public Animal(String myName, int myid) {
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction() {
System.out.println("大家好!我是" + id + "号" + name + ".");
}
}
子类
public class Penguin extends Animal {
public Penguin(String myName, int myid) {
super(myName, myid);
}
}
public class Mouse extends Animal {
public Mouse(String myName, int myid) {
super(myName, myid);
}
}