欢迎光临散文网 会员登陆 & 注册

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

2023-07-12 17:02 作者:这有啥好看的啊  | 我要投稿

第三周周四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修饰的代码块成为静态代码块

静态代码块在类加载的时候就加载了

创建多个对象过程中只执行一次

适合驱动加载等只执行一次的内容

静态代码块只能访问静态数据




**程序中运行的顺序**


启动程序

开启父类加载

父类静态 属性/代码块

开启子类加载

子类静态 属性/代码块

进入子类构造

由子类构造直接进入父类构造(因为父类构造写在子类构造的第一行)

父类构造代码块

父类构造方法(中的局部代码块)

子类构造代码块

子类构造方法(中的局部代码块)


![image-20230706105813500](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230706105813500.png)


## 类中的内容:


实例属性


静态属性


静态代码块


构造代码块


构造方法


内部类


方法




## 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("子类方法");

}

}

```


![image-20230706172352270](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230706172352270.png)


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;

}

}

}

}

```






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

分享到微博请遵守国家法律