千锋教育Java入门全套视频教程(java核心技术,适合java零基础,Java

第三周周四7.6
创建数组
存储5个学生对象(姓名,年龄)
输出年龄大于23的人
```java
package com.qf.zhousi;
public class Demo01 {
public static void main(String[] args) {
Student[] stu1= new Student[5];
stu1[0] = new Student("张三",18);
stu1[1] = new Student("李四",14);
stu1[2] = new Student("王五",22);
stu1[3] = new Student("赵六",34);
stu1[4] = new Student("刘二",26);
for(int i=0;i<5;i++) {
if(stu1[i].age>23)
System.out.println(stu1[i].name);
}
}
}
//学生类
class Student{
//属性
String name;
int age;
//方法
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
```
晨考错题
---------------------------------------------------------------------------------------
## 代码块
定义在方法中的代码块叫做局部代码块
自动执行无需手动调用
能缩小数据的访问范围
```java
public class Demo01
public static void main(string[]args){
//局部变星
int num 10;
System.out.println("HelloWorld001");
system.out.println("HelloWorld002");
System.out.println("HelloWorld003");
//局部代码块
//局部代码块可以访问局部变量
System.out.println("Helloworld004===>"+num);
//局部代码块中的变量
int number 10000;
//方法中的代码不能访问局部代码块中的变量
//System.out.println("HelloWorld004===>"+number);
System.out.println("HelloWorld005");
system.out.println("Helloworld006");
System.out.println("HelloWorld007");
```
**构造代码块**
也称为动态代码块
定义位置类中方法外,和构造方法同级别
执行时间早于构造方法
加载时间和成员变量相同
可以把构造方法中相同的代码提取出来放入构造代码块中
```java
class Consumer{
String name;
String hobby;
{
//动态代码块【构造代码块】
//System.out,println("动态代码块---);
System.out.println("欢迎光临,大爷里面请");
}
public Consumer(){
public Consumer(string name){
public Consumer(string name,string hobby){
}
}
```
**静态代码块**
使用static修饰的代码块成为静态代码块
静态代码块在类加载的时候就加载了
创建多个对象过程中只执行一次
适合驱动加载等只执行一次的内容
静态代码块只能访问静态数据
**程序中运行的顺序**
启动程序
开启父类加载
父类静态 属性/代码块
开启子类加载
子类静态 属性/代码块
进入子类构造
由子类构造直接进入父类构造(因为父类构造写在子类构造的第一行)
父类构造代码块
父类构造方法(中的局部代码块)
子类构造代码块
子类构造方法(中的局部代码块)

## 类中的内容:
实例属性
静态属性
静态代码块
构造代码块
构造方法
内部类
方法
## final
final类不能被继承,没有子类,其中一般都是不可改变的规则
final方法是最终方法可以被继承不能被重写
final变量
final修饰的基本类型变量,值不能改变,只能赋值一次
final修饰的引用类型对象,里面的值可以修改,但是地址值不能改变
final定义成员变量/实例变量
可以在创建时赋值,可以在构造代码快中赋值,可以在方法中赋值,只要在对象创建之前赋值就可以,只能赋值一次不能修改。
静态最终变量是在类加载完之前赋值
# 接口
使用interface声明的内容称为接口
接口是一种规范:
表明了能做的事情,没有具体实现的代码
**定义接口:**
```java
interface 接口名{
属性
方法
}
```
**接口中的属性**
公共开的 并且 是静态的 最终的
**方法**
都是公开抽象方法
默认使用 public abstract 修饰
JDk8之后可以书写static或者Default修饰的方法(没人用过)
**接口和抽象类对比**
相同:
都能生产字节码文件
都拥有Object中的属性和方法
都不能自己创建对象
都可以声明为引用类型
不同:
抽象类中可以定义实例属性、实例方法、构造方法、代码块、抽象方法等
接口中属性都是静态抽象公开的
方法都是公开抽象的
**常量接口**
把项目中所有的常量都收集出来放入同一个接口文件中
统一定义和管理
## 课后作业:
1、编写代码验证装箱和拆箱【类型转换】
```java
package com.qf.day14homework;
public class Demo01 {
public static void main(String[] args) {
/**
* 1、编写代码验证装箱和拆箱【类型转换】
*/
Person student1=new Students();//装箱
student1.eat();//调用自己的方法
Students student2=(Students)student1;//拆箱可以调用自己的方法
student2.study();//拆箱调用自己的学习方法
}
}
//父类
class Person{
void eat() {
System.out.println("吃饭");
}
}
//子类
class Students extends Person{
void study() {
System.out.println("学习");
}
}
```
2、验证static修饰各种数据的特点
```java
package com.qf.day14homework;
public class Demo02 {
public static void main(String[] args) {
/**
* 2、验证static修饰各种数据的特点
*/
Animal01.eat();//静态的方法可以直接调用
Animal01.names="二狗";//静态属性可以直接调用,修改后全部都受影响
Animal01 dog02=new Dog01();
System.out.println("实例属性:"+dog02.name);
System.out.println("静态属性:"+dog02.names);
Dog01 dog01=new Dog01();
dog01.names="小奶狗";//修改静态属性
System.out.println("父类调用静态属性names:"+Animal01.names);
System.out.println("子类02,没有调用dog02修改静态属性names:,此时的names为:"+dog02.names);
System.out.println("子类01,调用修改静态属性names:"+dog01.names);
}
}
//父类
class Animal01{
//实例方法
String name = "张三";
//静态属性
static String names = "狗蛋";
//静态代码块
static {
System.out.println(names+"的静态代码块");
}
//构造代码块
{
System.out.println("构造代码块");
}
//构造器
public Animal01(String name) {
this.name = name;
}
public Animal01() {
}
//静态方法
static void eat() {
System.out.println(names+"在吃饭");
}
//公开方法
void sleep(){
System.out.println(name+"在睡觉");
}
}
//子类
class Dog01 extends Animal01{
}
```
3、编写代码,验证类中个各种元素加载的时机
```java
package com.qf.day14homework;
public class Demo03 {
public static void main(String[] args) {
/**
* 3、编写代码,验证类中个各种元素加载的时机
*/
//创建对象
Son son01=new Son();
}
}
//父类
class Fater{
//实例属性
String name="a";
//静态属性
static int age=1;
//静态代码块
static {
System.out.println("父类静态属性:"+age);
System.out.println("父类静态代码块");
eat();
}
//构造代码块
{
sleep();
System.out.println("父类构造代码块");
}
//构造器
public Fater() {
System.out.println("父类构造器"+name);
}
//静态方法
static void eat() {
System.out.println("父类静态方法");
}
//方法
void sleep() {
System.out.println("父类方法");
}
}
//子类
class Son extends Fater{
//实例属性
String names="a";
//静态属性
static int ages=1;
//静态代码块
static {
System.out.println("子类静态属性:"+ages);
System.out.println("子类静态代码块");
eat();
}
//构造代码块
{
sleep();
System.out.println("子类构造代码块");
}
//构造器
public Son() {
System.out.println("子类构造器"+names);
}
//静态方法
static void eat() {
System.out.println("子类静态方法");
}
//方法
void sleep() {
System.out.println("子类方法");
}
}
```

4、汽车有很多功能
飞行【接口】
过河【接口】
越野【接口】
汽车类Auto【抽象类】
start
stop
run
创建Auto的子类,选择性的实现上面的接口,使用多态方式创建对象,展示信息
```java
package com.qf.day14homework;
public class Demo04 {
public static void main(String[] args) {
/**
* 4、汽车有很多功能
飞行【接口】、过河【接口】、越野【接口】、汽车类Auto【抽象类】
方法:start、stop、run
创建Auto的子类,选择性的实现上面的接口,使用多态方式创建对象,展示信息
*/
//接口创建AiCar的对象
Fly flyCar =new AiCar();
//调用接口指定的方法
flyCar.fly();
//向上转型
AuTo autoCar = new NewEnergyVehicles();
//调用方法
autoCar.start();
autoCar.run();
autoCar.stop();
//创建子类对象
AiCar aiCar = new AiCar();
//调用接口方法
aiCar.fly();
aiCar.acrossTheRiver();
aiCar.crossCountry();
//调用父类方法
aiCar.stop();
}
}
//飞行接口
interface Fly{
//抽象方法
void fly();
}
//过河接口
interface AcrossTheRiver{
//抽象方法
void acrossTheRiver();
}
//越野接口
interface CrossCountry{
//抽象方法
void crossCountry();
}
//父类汽车类
abstract class AuTo{
//方法1
abstract void start();
//方法2
abstract void stop();
//方法3
abstract void run();
}
//子类新能源汽车
class NewEnergyVehicles extends AuTo implements AcrossTheRiver{
@Override
void start() {
System.out.println("启动新能源汽车");
}
@Override
void stop() {
System.out.println("新能源汽车停车");
}
@Override
void run() {
System.out.println("新能源汽车正在行驶");
}
@Override
public void acrossTheRiver() {
System.out.println("新能源汽车能够过河");
}
}
//子类人工智能汽车
class AiCar extends AuTo implements AcrossTheRiver,CrossCountry,Fly{
@Override
public void fly() {
System.out.println("人工智能汽车能飞");
}
@Override
public void crossCountry() {
System.out.println("人工智能汽车能够越野");
}
@Override
public void acrossTheRiver() {
System.out.println("人工智能汽车能过河");
}
@Override
void start() {
System.out.println("人工智能启动");
}
@Override
void stop() {
System.out.println("人工智能汽车成功悬停");
}
@Override
void run() {
System.out.println("人工智能汽车正在全速前进,车速达到666km/h");
}
}
```
5、手机有很多接口
耳机接口
SD卡接口
SIM卡接口
电源接口
喇叭接口
编写实现类手机展示手机接口的功能
```java
package com.qf.day14homework;
import java.util.Scanner;
public class Demo05 {
//声明全局变量
public static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
/**
* 5、 手机有很多接口
耳机接口
SD卡接口
SIM卡接口
电源接口
喇叭接口
编写实现类手机展示手机接口的功能
*/
//声明
//创建手机类的对象
Phone phone = new Phone();
System.out.println("请问你是否开机:【1.是/2.否】(输入别的无效)");
int number=input.nextInt();
if(number==2) {//不开机就结束
return;
}else if(number==1) {
phone.swiTch=true;
}
System.out.println("你的手机已经开机,您有以下功能可以使用");
out:while(true) {
System.out.println("-------------------------------");
System.out.println("1.耳机接口;2.SD卡接口;3.SIM卡接口;4.电源;5.调节音量");
//输入用户选项
int num =input.nextInt();
switch(num) {
case 1://选择1 调用手机的耳机接口
phone.headset(phone.headset);
break;
case 2://调用SD卡
phone.sd(phone.sd);
break;
case 3://SIM
phone.SIM(phone.sim);
break;
case 4://电源
phone.powerSupply();
if(phone.swiTch==false) {
System.out.println("关机成功");
break out;
}else
break;
case 5://调节音量
phone.horn();
break;
default:
System.out.println("您的输入有误,请重新输入。");
break;
}
}
}
}
//耳机接口
interface Headset{
//属性
static boolean headset=false;
//耳机
void headset(boolean headset);
}
//SD卡接口
interface SD{
//属性
static boolean sd=false;
//SD
void sd(boolean sd);
}
//SIM接口
interface SIM{
static boolean sim=false;
//SIM
void SIM(boolean sim);
}
//电源接口
interface PowerSupply{
//powerSupply
void powerSupply();
}
//喇叭接口
interface Horn{
//horn
void horn();
}
//手机类
class Phone implements Headset,Horn,PowerSupply,SD,SIM{
//电源属性
static boolean swiTch = false;
//音量属性
static int voice=0;
@Override
public void SIM(boolean sim) {
//声明
Scanner input = new Scanner(System.in);
System.out.println();
System.out.println("你已经进入SIM卡接口");
if(sim) {
System.out.println("您现在插有SIM卡,是否需要移除【1.是;2.否】(如果输入其他则直接返回上一个界面)");
int a=input.nextInt();
if(a==1) {
System.out.println("您已经移除成功");
sim=false;
}else {//不是1直接返回
System.out.println("好的,返回上个界面");
return;
}
}else {
System.out.println("您现在还未插SIM卡,是否需要插入【1.是;2.否】(如果输入其他则直接返回上一个界面)");
int a=input.nextInt();
if(a==1) {
System.out.println("您已经成功插入SD卡");
sim=true;
}else {//不是1直接返回
System.out.println("好的,返回上个界面");
return;
}
}
}
@Override
public void sd(boolean sd) {
//声明
Scanner input = new Scanner(System.in);
System.out.println();
System.out.println("你已经进入SD卡接口");
if(sd) {
System.out.println("您现在插有SD卡,是否需要移除【1.是;2.否】(如果输入其他则直接返回上一个界面)");
int a=input.nextInt();
if(a==1) {
System.out.println("您已经移除成功");
sd=false;
}else {//不是1直接返回
System.out.println("好的,返回上个界面");
return;
}
}else {
System.out.println("您现在还未插SD卡,是否需要插入【1.是;2.否】(如果输入其他则直接返回上一个界面)");
int a=input.nextInt();
if(a==1) {
System.out.println("您已经成功插入SD卡");
sd=true;
}else {//不是1直接返回
System.out.println("好的,返回上个界面");
return;
}
}
}
@Override
public void powerSupply() {
//声明
Scanner input = new Scanner(System.in);
System.out.println();
if(swiTch==true) {
System.out.println("您现在是开机状态是否关机?【1.是;2.否】(如果输入其他则直接返回上一个界面)");
int a=input.nextInt();
if(a==1) {
System.out.println("您的手机即将关机");
swiTch=false;
}else {
System.out.println("返回主界面");
}
}else {
return;
}
}
@Override
public void horn() {
//声明
Scanner input = new Scanner(System.in);
System.out.println();
System.out.println("您现在的音量为:"+voice+",你可以调节音量,你要增大还是减小:【1.增大;2.减小;最大音量为6】(如果输入其他则直接返回上一个界面)");
int a =input.nextInt();
if(a==1&&voice<=5) {
voice++;
System.out.println("你现在的音量为:"+voice);
}else if(a==2&&voice>0) {
voice--;
System.out.println("你现在的音量为:"+voice);
}else {
System.out.println("好的,返回主界面");
return;
}
}
@Override
public void headset(boolean headset) {
//声明
Scanner input = new Scanner(System.in);
System.out.println();
if(headset) {
System.out.println("您已经插入耳机");
System.out.println("您是否要拔掉耳机:【1.拔掉耳机;2.不拔】(如果输入其他则直接返回上一个界面)");
int a =input.nextInt();
if(a==1) {
System.out.println("您已经成功拔掉耳机");
headset=false;
}
else {//如果不操作就退出耳机则直接退出
System.out.println("好的退出此界面!");
return;
}
}else {
System.out.println("您现在还没插入耳机是否要插入耳机:【1.插入耳机;2.算了不用了】(如果输入其他则直接返回上一个界面)");
int a = input.nextInt();
if(a==1) {
System.out.println("好的您已经插入耳机成功");
headset=true;
}else {
System.out.println("好的退出此界面!");
return;
}
}
}
}
```