由浅到深认识Java语言(31):阶段性练习

该文章Github地址:https://github.com/AntonyCheng/java-notes

在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!

上一章:由浅到深认识Java语言(30):集合

41.阶段性练习

练习一:

  • 创建一个动物类,定义种类,性别和属性;
  • 从键盘录入数据,通过构造方法存入对象中,并调用对象的方法打印;
import java.util.Scanner;public class Demo {public static void main(String[] args) {Scanner sc =  new Scanner(System.in);System.out.println("请输入物种名字:");String species = sc.next();System.out.println("请输入物种性别:");char sex = sc.next().charAt(0);Animal a = new Animal(species, sex);a.printObject();}
}class Animal{String species;char sex;public Animal(String species,char sex) {this.species = species;this.sex = sex;}public void printObject() {System.out.println("物种:"+species+" 性别:"+sex);}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习二:

  • 描述猫类,有属性 name、color、sex,通过构造方法给猫的属性赋值(一个是波斯猫,一个是土猫,其他属性自定);
  • 为猫类添加吃饭,抓老鼠方法,创建两只猫的对象;
  • 分别调用猫的吃饭,抓老鼠方法;
public class Demo {public static void main(String[] args) {Cat bosi = new Cat("波斯猫", "红色", '雄');Cat tumao = new Cat("土猫", "绿色", '雌');bosi.eat(bosi.name);tumao.catchMouse(tumao.name);}
}class Cat {String name;String color;char sex;public Cat() {super();// TODO Auto-generated constructor stub}public Cat(String name, String color, char sex) {super();this.name = name;this.color = color;this.sex = sex;}public void eat(String name) {System.out.println(name+"吃饭!");}public void catchMouse(String name) {System.out.println(name+"抓老鼠!");}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习三:

  • 创建一个工具类,定义方法用来将基本数据类型转换成字符串;
public class Demo {public static void main(String[] args) {Tools t = new Tools();byte b = 123;String s1 = t.getStringFromByte(b);short s = 1234;String s2 = t.getStringFromShort(s);char c = '1';String s3 = t.getStringFromBChar(c);int i = 12345;String s4 = t.getStringFromInt(i);float f = 12345.6f;String s5 = t.getStringFromFloat(f);double d = 1234567.8;String s6 = t.getStringFromDouble(d);long l = 12345678;String s7 = t.getStringFromLong(l);boolean bool = false;String s8 = t.getStringFromBoolean(bool);System.out.printf("%s %s %s %s %s %s %s %s",s1,s2,s3,s4,s5,s6,s7,s8);}
}class Tools {public String getStringFromByte(byte num) {return num+"";}public String getStringFromShort(short num) {return num+"";}public String getStringFromBChar(char num) {return num+"";}public String getStringFromInt(int num) {return num+"";}public String getStringFromFloat(float num) {return num+"";}public String getStringFromDouble(double num) {return num+"";}public String getStringFromLong(long num) {return num+"";}public String getStringFromBoolean(boolean num) {return num+"";}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习四:

  • 一档选秀节目,设计了一个平台共参与者展示才艺,不同的参与者有不同的才艺,使用多态编程模拟;
public class Demo {public static void main(String[] args) {People coder = new Coder("程序员",21);People singer = new Singer("歌手",22);People dancer = new Dancer("舞者",21);System.out.println("请各位选手自我介绍一下:");System.out.println("我叫"+coder.name+",今年"+coder.age+"岁;");coder.haveRest();Coder c = (Coder)coder;c.playComputer();System.out.println("我叫"+singer.name+",今年"+singer.age+"岁;");singer.haveRest();Singer s = (Singer)singer;s.sing();System.out.println("我叫"+dancer.name+",今年"+dancer.age+"岁;");dancer.haveRest();Dancer d = (Dancer)dancer;d.dance();}
}class People{String name;int age;public People(String name, int age) {super();this.name = name;this.age = age;}public People() {super();// TODO Auto-generated constructor stub}public void haveRest() {System.out.println("我会休息!");}
}class Coder extends People{public Coder(String name, int age) {super(name, age);// TODO Auto-generated constructor stub}public void playComputer() {System.out.println("我会玩电脑!");}
}class Singer extends People{public Singer(String name, int age) {super(name, age);// TODO Auto-generated constructor stub}public void sing() {System.out.println("我会唱歌!");}
}class Dancer extends People {public Dancer(String name, int age) {super(name, age);// TODO Auto-generated constructor stub}public void dance() {System.out.println("我会跳舞!");}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习五:

  • 学生都有学习和做作业的能力,但是学习的方式不同,使用抽象类的方法模拟编程;
public class Demo {public static void main(String[] args) {Student good = new Good();Student poor = new Poor();good.name = "xiaochen";good.age = 20;System.out.println("我是"+good.name+" 年龄"+good.age);good.studyMethod();poor.name = "xiaowu";poor.age = 20;System.out.println("我是"+poor.name+" 年龄"+poor.age);poor.studyMethod();}
}abstract class Student{String name;int age;abstract void studyMethod();
}class Good extends Student{@Overridevoid studyMethod() {// TODO Auto-generated method stubSystem.out.println("卷!");}}class Poor extends Student{@Overridevoid studyMethod() {// TODO Auto-generated method stubSystem.out.println("摆!");}}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习六:

  • 创建一个乐器接口,定义演奏方法 play ,定义两个实现类(钢琴 Piano,小提琴 Violin),分别实现乐器接口并做出不同的演奏;
public class Demo {public static void main(String[] args) {Tools piano = new Piano();Tools violin = new Violin();piano.play();violin.play();}
}interface Tools {void play();
}class Piano implements Tools {@Overridepublic void play() {// TODO Auto-generated method stubSystem.out.println("演奏钢琴曲!");}
}class Violin implements Tools{@Overridepublic void play() {// TODO Auto-generated method stubSystem.out.println("演奏小提琴曲!");}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习七:

  • 国家规定,汽车必须能点火,能开动,国家将文件发送到汽车厂商的手里,厂商生产的汽车必须符合要求,可以有特性功能,编程模拟;
public class Demo {public static void main(String[] args) {CarShop1 c1 = new CarShop1(1,0);CarShop2 c2 = new CarShop2(1,1);c1.getLisence(c1.getName());c2.getLisence(c2.getName());}
}class CarShop {int canLaunch;int canMove;public CarShop() {super();// TODO Auto-generated constructor stub}public CarShop(int canLaunch, int canMove) {super();this.canLaunch = canLaunch;this.canMove = canMove;}public void getLisence(String name) {if (this.canLaunch != 0 && this.canMove != 0) {System.out.println(name+"能够得到国家许可");} else {System.out.println(name+"不能得到国家许可");}}
}class CarShop1 extends CarShop {private String name = "CarShop1";public String getName() {return this.name;}public void Character() {System.out.println("时速300km/h");}public CarShop1() {super();// TODO Auto-generated constructor stub}public CarShop1(int canLaunch, int canMove) {super(canLaunch, canMove);// TODO Auto-generated constructor stub}}class CarShop2 extends CarShop {private String name = "CarShop2";public String getName() {return this.name;}public void Character() {System.out.println("时速320km/h");}public CarShop2() {super();// TODO Auto-generated constructor stub}public CarShop2(int canLaunch, int canMove) {super(canLaunch, canMove);// TODO Auto-generated constructor stub}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习八:

  • 定义一个动物类,自定义属性;
  • 定义吃饭和睡觉两个方法;
  • 创建两个对象(小猫和小狗),分别调用吃饭和睡觉方法;
  • 打印结果是:小猫吃小鱼干,甜甜地睡着了,小狗吃骨头,憨憨地睡着了;
class Demo {public static void main(String[] args) {Animal Cat = new Animal("小猫",2);Animal Dog = new Animal("小狗",1);System.out.println(Cat.name+Cat.eat("小鱼干")+","+Cat.sleep("甜甜")+","+Dog.name+Dog.eat("骨头")+","+Dog.sleep("憨憨"));}
}class Animal {String name;int age;public Animal() {super();// TODO Auto-generated constructor stub}public Animal(String name, int age) {super();this.name = name;this.age = age;}public String sleep(String description) {return description + "地睡着了";}public String eat(String thing) {return "吃" + thing;}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习九:

  • 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数;
  • ABCDEabcd123456!@#$%^

方法一:

import java.util.Scanner;class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入要计数的字符串:");String str = sc.next();sc.close();char ch[] = str.toCharArray();int matchNum = 0;int matchBig = 0;int matchSmall = 0;int matchOther = 0;for (int i = 0;i<ch.length;i++) {if(ch[i]>='a'&&ch[i]<='z') {matchSmall++;}else if(ch[i]>='A'&&ch[i]<='Z') {matchBig++;}else if(ch[i]>='1'&&ch[i]<='9') {matchNum++;}else {matchOther++;}}System.out.println("数字:"+matchNum);System.out.println("大写字母:"+matchBig);System.out.println("小写字母:"+matchSmall);System.out.println("其他字符:"+matchOther);}
}

方法二:

import java.util.Scanner;class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入需要计数的字符串:");String str = sc.next();sc.close();char ch[] = str.toCharArray();int matchNum = 0;int matchBig = 0;int matchSmall = 0;int matchOther = 0;for (int i = 0;i<ch.length;i++) {String s = Character.toString(ch[i]);if(s.matches("[1-9]")) {matchNum++;}else if(s.matches("[a-z]")) {matchSmall++;}else if(s.matches("[A-Z]")) {matchBig++;}else {matchOther++;}}System.out.println("数字:"+matchNum);System.out.println("大写字母:"+matchBig);System.out.println("小写字母:"+matchSmall);System.out.println("其他字符:"+matchOther);}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习十:

  • 把数组中的数据按照指定格式拼接成一个字符串

    • 举例

      int[] arr = {1,2,3};

    • 输出结果 “[1,2,3]”

import java.util.Scanner;class Demo {public static void main(String[] args) {Scanner sc= new Scanner(System.in);System.out.println("你要输入的数据长度:");int n = sc.nextInt();int[] arr = new int[n];System.out.println("请输入你要格式化的数字:");for (int i = 0; i < arr.length; i++) {arr[i] = sc.nextInt();}sc.close();System.out.println("格式化后输出为:");System.out.print("[");for (int i = 0; i < arr.length-1; i++) {System.out.print(arr[i]+",");}System.out.print(arr[n-1]+"]");}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习十一:

  • 把字符串反转
    • “abc” ==> “cba”
import java.util.Scanner;class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入要反转的字符串:");String str = sc.next();sc.close();char[] ch = str.toCharArray();int n = ch.length / 2;for (int i = 0; i < ch.length; i++) {if(i>=n) {break;}char temp = ch[i];ch[i] = ch[ch.length-1-i];ch[ch.length-1-i] = temp;}System.out.println("反转后得:");System.out.println(ch);}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习十二:

  • 统计大串中小串出现的次数

    • 大串:Adcddkiqooqkdddleef
    • 小串:dd

    方法一:

class Demo {public static void main(String[] args) {String str = "Adcddkiqooqkdddleef";String mstr = "dd";char[] cs = str.toCharArray();char[] mcs = mstr.toCharArray();int count = 0;int b1 = 0;int condition = mcs.length;int b2 = 0;for (int i = 0; i < cs.length; i++) {if (i + mcs.length > cs.length - 1) {break;}b1 = 0;for (int j = 0; j < mcs.length; j++) {if (cs[i + j] == mcs[j]) {b1++;}}if (b1 == mcs.length) {count++;}}while(condition>0) {if(cs[cs.length-1]==mcs[condition-1]) {b2++;}if(b2==mcs.length) {count++;}condition--;}System.out.println("检测重复到" + count + "次");}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

​ 方法二:

package top.sharehome.BigJava;import java.util.Scanner;public class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.next();String str0 = sc.next();int count = 0;int index = 0;while ((index = str.indexOf(str0)) != -1) {count++;str = str.substring(index+1,str.length());}System.out.println(count);}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习十三:

  • 除去一个字符串中相邻重复的字符
    • abbddAffeeEddcccwceaa ==> abdAfeEdcwcea
import java.util.Scanner;class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入需要去重的字符串:");String str = sc.next();sc.close();StringBuffer sb = new StringBuffer();char[] charArray = str.toCharArray();for (int i = 0; i < charArray.length; i++) {if (i + 1 != charArray.length) {if (charArray[i] != charArray[i + 1]) {sb.append(charArray[i]);}}else {sb.append(charArray[i]);}}System.out.println("去除重复后:");System.out.println(sb);}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下一章:由浅到深认识Java语言(32):多线程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/572367.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

市场复盘总结 20240327

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 14% 最常用…

Mysql数据库命令大全

目录 mysql服务器处理客户端请求 Mysql数据库常用命令 三种删除方式&#xff1a; mysql服务器处理客户端请求 首先MySQL是典型的c/s架构&#xff0c;即client/Server架构&#xff0c;不论客户端进程和服务器进程是采用哪种方式进行通信&#xff0c;最后实现的效果都是&…

Qt C++ | QTimer经验总结

QTimer Class QTimer类提供重复计时器和单次计时器 头文件: #include <QTimer> qmake: QT += core 继承自: QObject 定时器信号 void timeout() 公共函数 Qt::TimerType 枚举定义了 Qt 中不同类型的定时器。它包含以下值: **Qt::PreciseTimer:**高精度定时器,用…

netty构建udp服务器以及发送报文到客户端客户端详细案例

目录 一、基于netty创建udp服务端以及对应通道设置关键 二、发送数据 三、netty中的ChannelOption常用参数说明 1、ChannelOption.SO_BACKLOG 2、ChannelOption.SO_REUSEADDR 3、ChannelOption.SO_KEEPALIVE 4、ChannelOption.SO_SNDBUF和ChannelOption.SO_RCVBUF 5、Ch…

App Inventor 2 实现商业级APP启动屏幕效果(SplashScreen)

启动屏幕效果 实现的功能包括&#xff1a;启动App时展示启动屏&#xff0c;右上角展示5秒倒计时&#xff0c;中途可点击跳过。倒计时结束或点击跳过&#xff0c;则跳转到主界面。效果如下&#xff1a; 实现原理 App启动屏效果的实现原理及详细步骤要点如下&#xff1a; Scree…

JVM(六)——内存模型与高效并发

内存模型与高效并发 一、java 内存模型 【java 内存模型】是 Java Memory Model&#xff08;JMM&#xff09; 简单的说&#xff0c;JMM 定义了一套在多线程读写共享数据时&#xff08;成员变量、数组&#xff09;时&#xff0c;对数据的可见性、有序 性、和原子性的规则和保障…

stable diffusion 的 GPU 不足怎么解决

稳定扩散&#xff08;stable diffusion&#xff09;是一种用于图像处理和计算机视觉任务的图像滤波算法。 当使用Stable Diffusion过程中遇到GPU显示内存不足的问题时。解决这个问题的方法有以下几种&#xff1a; 目前&#xff0c;对我来说&#xff0c;就最后一点能够暂时解决当…

dy消息监控,python协议

2024年3月27日 dy消息监控&#xff0c;协议版本&#xff0c;有wss和轮训2种方式&#xff0c;支持监听好友和群消息&#xff0c;支持消息回复&#xff0c;消息类型包括如下&#xff1a; 表情&#xff0c;文本&#xff0c;作品&#xff0c;语音&#xff0c;图片&#xff0c;视频…

ehters.js:provider

ethers.jsV5.4文档 安装ethers npm install ethers5.4.0// 引入 import { ethers } from ethersProviders /** Provider类* Provider类是对以太坊网络连接的抽象&#xff0c;为标准以太坊节点功能提供简洁、一致的接口。 */ const provider new ethers.providers.Web3Provider…

rabbitmq集群问题排查

blowcode-test-redis04、blowcode-test-redis05、blowcode-test-redis06 这3个节点搭建的rabbitmq集群&#xff0c;04是主节点。 某次分别观察3个节点的管理页面&#xff0c;先都只能看到自己的节点是正常的绿色状态&#xff0c;猜测节点都各自为政了。 下图是05节点成功加入0…

【书生·浦语大模型实战营第二期】学习笔记1

1. Introduction 开源llm举例&#xff1a;LLaMA 、Qwen 、Mistral 和Deepseek 大型语言模型的发展包括预训练、监督微调&#xff08;SFT&#xff09;和基于人类反馈的强化学习&#xff08;RLHF&#xff09;等主要阶段 InternLM2的显著特点 采用分组查询注意力&#xff08;GQA…

【3D目标检测】Det3d—SE-SSD模型训练(前篇):KITTI数据集训练

SE-SSD模型训练 1 基于Det3d搭建SE-SSD环境2 自定义数据准备2.1 自定义数据集标注2.2 训练数据生成2.3 数据集分割 3 训练KITTI数据集3.1 数据准备3.2 配置修改3.3 模型训练 1 基于Det3d搭建SE-SSD环境 Det3D环境搭建参考&#xff1a;【3D目标检测】环境搭建&#xff08;OpenP…