javase学习笔记(二)----2021.08.14

javase学习笔记(二)

一、数组

  • 注意下标的有限范围0~n-1
  • 一组连续地存储空间,存储相同的数据类型的值
  • int [ ] a=new int[5];
  • int a[ ]=new int [5];二者没有区别
  • 默认值:整数—0,小数—0.0,字符—\u0000,布尔—flase,其他—null

在这里插入图片描述

解决问题:

  • 平均值
  • 查找元素是否存在
  • 排序问题:冒泡,选择,jdk
    import java.util.Arrays;-----Array.sort(数组名)升序
    降序:手动倒置元素i,n-1-i,辅助变量
    在这里插入图片描述

二、 Eclipse的使用

解压,桌面快捷方式
选择工作存储空间

  • 选择java模式:window----Perspective —Open Perspective —other—java
  • 修改字体font:window—Preferences(首选项)–font—colors and font ----Basic----Text Font —字号
  • 修改编码:window—Preferences(首选项)–encoding—Workspace—text file encoding —other —Utf-8
  • 修改代码提示:window—Preferences(首选项)–assist(助手)—java—Editor—Content Assist—Auto Activation的triggers for javac选项修改为:
    .abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
  • 创建项目
  1. File–New --java Project—project name(项目名称)``其它默认即可`
  2. jre(电脑安装相关联的开发环境)
  3. src 存放源代码—new— package(包)----class(类)
    建包时,中间用点隔开.
  4. 绿色三角点击运行
  • 快捷键:
    在这里插入图片描述
    在这里插入图片描述

三、面向对象

  • 程序就是用计算机语言编写的指令集合
  • oop(object oriented programming)万物皆对象
  • 对象:行为(方法)、特征(属性)
  • 模板
  1. 在一组相同或类似的事物中,抽取出来共有的特征和行为
  2. 类名 对象名 =new 类名()
  3. 对象名.属性名,对象名.方法名(参数)
  4. 一个类(模板)可以有多个对象(实例)
    类:定义了对象具有的特征和行为;
    对象:拥有多个特征和行为的实体
    在这里插入图片描述
  • 方法重载:方法名相同,参数列表(l类型,个数,顺序)不同,与访问修饰符和返回值类型无关
    好处:屏蔽使用差异,灵活,方便根据实际传入的值判定使用的方法
  • 构造方法或构造器public 类名(){......}主要用于创建对象
  1. 没有返回值类型
  2. 创建对象时,调用构造方法,不可通过句点调用
  3. 名称与类名相同
  4. 类中一般默认有无参的构造方法
  5. 开辟内存空间(栈–变量(保存数据的内存地址)名等局部变量,堆–存放对象数据等)
  6. 对变量赋值
  7. 执行构造方法的代码
  • 构造方法的重载
  • 重载时注意无参要写上去,否则报错!!!
  • this
  1. 表示当前对象(调用属性,调用方法
  2. 局部变量和实例变量名相同,优先访问局部变量,此时,若要访问实例变量要用到this.前缀;(不存在重名是,this则可以省略)
  3. 调用本类中的其他构造方法this() this(实参),必须在首行被调用
    在这里插入图片描述

四、三大特性

  • 封装
    属性私有化,方法通过get set 控制
    在这里插入图片描述 Alt+Shift+S:快捷键,写Getter()Setter()方法
    Alt+/:默认构造方法
    带参数的构造方法:·alt+shift+s–>Constructor
    写父类方法名:快速重写父类的方法(方法覆盖)
    在这里插入图片描述
  • 综合案例—银行
    在这里插入图片描述
  • 继承
  • 父类(抽象类):可根据程序需要使用的多个具体类,进行共性抽取,实现代码重用;
  • class 子类 extends 父类{…}
  • java为单继承,一个类只有一个父类,但可以多级集成,属性和方法逐级叠加;
  • 构造方法不被继承;private修饰的属性和方法进本类可见;父子类不在同一个package中,default修饰的属相和方法也不可被继承(仅同包可见);
    在这里插入图片描述
  • 方法的覆盖(方法重写)父类无法满足子类的需求
    在这里插入图片描述
  • 注解:验证是否遵循方法的定义规则
  • super
    在这里插入图片描述
    super.父类方法名()在这里插入图片描述
    在这里插入图片描述
  • super的使用
    在这里插入图片描述
    在这里插入图片描述
    super与this
    在这里插入图片描述
    在这里插入图片描述
  • 多态
    在这里插入图片描述
    在这里插入图片描述
package com.qf.poly_1;

/**
 * 动物类(父类)
 * @author wgy
 *
 */
public class Animal {
	//品种
	 String breed;
	//年龄
	 int age;
	//性别
	 String sex;
	
	//吃
	public void eat() {
		System.out.println("吃.......");
	}
	//睡
	public void sleep() {
		System.out.println("睡........");
	}
}

package com.qf.poly_1;

public class Dog extends Animal{
	//毛色
	String furColor;
	
	//跑
	public void run() {
		System.out.println("狗狗开始跑步...");
	}
	
	@Override
	public void eat() {
		System.out.println("狗狗开始大口大口的吃狗粮");
	}
}

package com.qf.poly_1;

public class TestDog {
	public static void main(String[] args) {
//		Animal animal=new Animal();
		//1逻辑上 Dog is a Animal  2 语法讲 (自动类型转换)
		Animal a=new Dog();
		
		a.age=2;
		a.breed="萨摩";
		a.sex="公";
		
		a.eat();
		a.sleep();
		
		System.out.println("-----------------");
		
		Animal a2=new Bird();
		a2.eat();
		a2.sleep();
		
		
//		short s=10;
//		int num=s;
	}
}

在这里插入图片描述

  • 场景一
package com.qf.poly_1;
/**
 * 主人类
 * @author wgy
 *
 */
public class Master {
	String name;
	
	/**
	 * 喂狗狗
	 */
//	public void feed(Dog dog) {
//		System.out.println(this.name+"喂食");
//		dog.eat();
//	}
//	
	/**
	 * 喂鸟
	 */
//	public void feed(Bird bird) {
//		System.out.println(this.name+"喂食");
//		bird.eat();
//	}
	//使用多态优化
	public void feed(Animal animal) {
		System.out.println(this.name+"喂食");
		animal.eat();
	}
	
	//购买动物
	public Animal buy(int type) {
		Animal animal=null;
		if(type==1) {
			animal=new Dog();
		}else if(type==2) {
			animal=new Bird();
		}
		return animal;
	}
	
}

package com.qf.poly_1;

public class TestMaster {
	public static void main(String[] args) {
		Master master=new Master();
		master.name="小明";
		Dog wangcai=new Dog();
		Bird bird=new Bird();
		//喂食
		master.feed(wangcai);
		master.feed(bird);
	}
}

  • 场景二
package com.qf.poly_1;

import java.util.Scanner;

public class TestMaster2 {
	public static void main(String[] args) {
		System.out.println("--------欢迎来到xxx动物市场--------");
		System.out.println("----------1.狗狗  2.鸟儿------------");
		System.out.println("请选择");
		Scanner input=new Scanner(System.in);
		int choice=input.nextInt();
		Master master=new Master();
		Animal animal=master.buy(choice);
		if(animal!=null) {
			System.out.println("购买成功");
			if(animal instanceof Dog) {
				Dog dog=(Dog)animal;
				dog.run();
			}else if(animal instanceof Bird) {
				Bird bird=(Bird)animal;
				bird.fly();
			}
		}else {
			System.out.println("购物失败");
		}
	}
}

  • 向上转型(装箱)
    在这里插入图片描述
  • 向下转型(拆箱)
    在这里插入图片描述
  • 类型转换异常
    在这里插入图片描述
    instanceof关键字
    在这里插入图片描述
    在这里插入图片描述

五、三个修饰符

  • 抽象abstract
    在这里插入图片描述
  • 抽象类的作用
    在这里插入图片描述
    在这里插入图片描述
  • 抽象总结
    在这里插入图片描述
  • static
  • 实例属性是每个对象各自持有的独立空间(多份),对象单方面修改,不会影响其他对象。
  • static 修饰属性时,它属于整个类,调用时类名.属性名----存与方法区
  • 静态属性是整个类共同持有的独立空间(一份),任何对象修改,都会影响其他对象—可计算一个类被创建多少次对象,在无参构造方法中count++
    在这里插入图片描述
  • 不必创建对象,可通过类名来访问
  • 静态方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 触发类加载
    在这里插入图片描述
  • static总结
    在这里插入图片描述
  • final关键字最终,不可更改
  • final修饰的方法不能被重写,但是可以被继承,final修饰的属性不可修改
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • final总结
    在这里插入图片描述
  • 引用类型的属性可以改变

六、接口

在这里插入图片描述

  • 实现(类与接口的关系)implements
    可以作为引用类型(可以创建变量
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 先继承后实现
    在这里插入图片描述
    在这里插入图片描述
  • 可序列化,可克隆
    在这里插入图片描述
  • 接口是一种标准,规范
    在这里插入图片描述
    在这里插入图片描述
  • 总结
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小哪吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值