Java学习笔记(二)

不羁岁月 提交于 2020-02-07 00:18:24

流程控制语句

条件语句

if ifelse ifelseifelse swich(多值判断)

循环语句

while for

递归

递归结构包括两个部分:

定义递归头,没有头递归将进入死循环,也就是递归结束的条件

递归体,什么时候需要调用自身的方法

任何用递归能解决的问题都能用迭代来解决,递归不强调效率,在高性能的情况下尽量避免使用递归,花时间又耗内存

面相过程和面相对象

相辅相成的关系 OOA OOD 面相对象适合开发大型的软件

面相对象是宏观上的把控,微观处理上仍然是面相过程

构造方法,用于创建这个类的对象,无参的构造方法可以有系统的自动创建

  1. 栈描述的是方法执行的内存模型,每个方法被调用的时候都会创建一个栈帧,存储局部变量、操作数、方法出口等
  2. JVM为每一个线程创建一个栈,用于存放该线程执行方法的信息(实际参数,局部变量等)
  3. 栈属于线程私有,不能实现线程间的共享
  4. 先进后出,后进先出
  5. 栈由系统自动分配,速度快,是一个连续的内存空间

  1. 用于存储创建好的对象和数组,数组也是对象
  2. JVM只有一个堆,被所有的线程共享
  3. 是一个不连续的内存分配空间,分配灵活,速度慢

方法区(静态区)

  1. JVM只有一个方法区,所有线程共享
  2. 方法区实际也是堆,只是用于存储类、常量相关的信息
  3. 用来存放程序中永远不变或者唯一的内容

垃圾回收机制

Java引入垃圾回收机制,C++内存管理问题得到解决,提高了开发效率

  1. 引用计数法:算法简单,循环引用的无用对象无法识别
  2. 引用可达法

https://blog.csdn.net/justloveyou_/article/details/71216049#t4

创建对象的步骤

  1. 分配对象空间,将对象成员变量初始化为0或空
  2. 执行属性值的显式初始化
  3. 执行构造方法
  4. 返回对象的地址给相关变量

this不能用于static的方法中

包机制

package包的概念:java中管理类的手段,开发中遇到大量同名的类,通过包解决类的重名的问题,实现对类的有效管理。包相对于类相当于文件夹对于文件的作用

  1. 通常是类的第一句非注释性语句
  2. 命名规则:域名倒着写即可,再填上注释块
  3. 写项目时都要加包,不要使用默认包
  4. com.chen和com.chen.ye不是包含,只是在逻辑上有联系
  5. JDK中主要的包: java.lang java.net java.awt java.io java.util

导入类和静态属性

导入类import

使用import cn.chenye.oo.*;//导入了User类降低编译速度,不影响运行速度

package cn.chenye.com;

import cn.chenye.oo.*;//导入了User类
import java.util.Date;
import java.sql.*;
import static java.lang.Math.PI;

public class Test {
	public static void main(String[] args) {
		User user=new User();
		String name;
		java.util.Date data=new java.util.Date();
		
	}

}

面相对象的提高 继承 封装 多态

使用extends实现继承

package cn.chenye.com;
/**
 * ceshi jicheng
 * @author ASUS
 *
 */
public class TestExtends {
	public static void main(String[] args) {
		Student stu=new Student ();
		stu.name="chenye";
		stu.height=170;
		stu.major="CyberSecurity";
		stu.rest();
		stu.study();
	}

}
class Person{
	String name;
	int height;
	
	public void rest()
	{
		System.out.println(name+" please have a rest!");
	}
}

class Student extends Person{
	String major;
	
	public void study()
	{
		System.out.println(name+" please Studing!!");
		
	}

}

  1. 父类,超类,基类,派生类
  2. Java中只有单继承,C++有多继承;类接口有多继承
  3. 子类继承父类,得到父类所有的属性和方法(除了父类的构造方法),单不见得可以直接访问,例如父类私有的属性和方法
  4. 查看类的继承树结构 Ctrl+T
  5. 定义类时没有父类,默认java.lang,object
  6. 用instanof判断对象是否属于类 结构true or false
		System.out.println(stu instanceof Student);
		System.out.println(stu instanceof Person);
		System.out.println(stu instanceof Object);

方法的重写override

  1. 方法名,形参列表相同
  2. 返回值类型和声明变量类型,子类小于等于父类
  3. 访问权限,子类大于等于父类

object类是所有类的根基

super是直接父类对象的引用。可通过super来访问父类中被子类覆盖的方法和属性

使用访问控制符

访问控制符的权限

多态

多态值得是桐楠格一个方法的调用,由于对象的不同可能会有不同的行为

对象转型

自动对上转型,强制向下转型

final关键字

  1. 修饰变量:被修饰的变量不可以被改变
  2. 修饰方法:该方法不可以被重写,但是可以被重载
  3. 修饰类:修饰的类不能被继承
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!