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

news/2024/5/8 21:14:08

该文章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.mrgr.cn/p/53613553

相关文章

[蓝桥杯 2022 省 A] 求和

[蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和&#xff0c;即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a 1 ⋅ a n a 2 ⋅ a 3 ⋯ a n − 2 ⋅ a n − 1 a n − 2 ⋅ a…

【Canvas与艺术】简约式胡萝卜配色汽车速度表

【效果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>胡萝卜色汽车速度仪表盘简化版</title><style type"…

网页无插件视频播放器,支持录像、截图、音视频播放,多路播放等,提供源码下载

前言 本播放器内部采用jessibuca插件接口&#xff0c;支持录像、截图、音视频播放等功能。播放器播放基于ws流&#xff0c;分屏操作支持1分屏、4分屏、6分屏、9分屏方式。 jessibuca工作原理是通过Emscripten将音视频解码库编译成Js&#xff08;WebAssembly&#xff0c;简称was…

python 中判断文件、目录是否存在的方法

判断目录是否存在并创建目录 一、实现上传文件功能二、判断目录是否存在的办法2.1、使用os模块2.1.1、判断目录是否存在2.1.2、os.makedirs()&#xff1a;递归创建目录 2.2、使用pathlib模块2.2.1、path.exist()判断目录是否存在2.2.1、path.mkdir()&#xff1a;创建目录 2.3、…

【Linux】详解进程终止进程等待

一、页表&&写时拷贝的进一步理解 页表中不仅仅只有虚拟地址到物理地址的映射&#xff0c;还包括了很多选项&#xff0c;其中就包括了映射条目的权限。当我们进程的代码和数据加载到内存并和进程地址空间建立映射关系时&#xff0c;如果数据的内容不允许被修改&#xff…

测试一下MySQL四种隔离级别都做了什么

准备工作: 一个表:两条事务 ,每条事务有两条相同sql,update值改成A、B用作区分: 1.读未提交 1.1测试脏读:事务A执行update操作,不提交,事务B执行select查询结果。 期望:按照网上所说,应该会产生脏读问题,查询到未提交的值,即name = "事务A"。 测试结果:…

CSS问题精粹1

1.关于消除<li>列表前的符号 我相信很多人在初学CSS时会遇到该问题&#xff0c;无论是创作导航&#xff0c;还是列表&#xff0c;前面都会有个黑点点或其它符号。 解决该问题其实很简单 采用list-style-type:none或list-style:none直接解决 如果你想更换前面的黑点点&a…

代码随想录算法训练营第五十九天|● 503.下一个更大元素II ● 42. 接雨水

下一个更大元素II 题目链接:503. 下一个更大元素 II - 力扣(LeetCode) 思路:这里处理循环数组的方式值得学习,用i%nums.size()和for循环的上限来模拟两层for循环。整体思路还是单调栈。 class Solution { public:vector<int> nextGreaterElements(vector<int>…

零基础学python之高级编程(6)---Python中进程的Queue 和进程锁,以及进程池的创建 (包含详细注释代码)

Python中进程的Queue 和进程锁,以及进程池的创建 文章目录 Python中进程的Queue 和进程锁,以及进程池的创建前言一、进程间同步通信(Queue)二、进程锁&#xff08;Lock&#xff09;三、创建进程池Poorpool 类方法: End! 前言 大家好,上一篇文章,我们初步接触了进程的概念及其应…

C语言从入门到实战----数据在内存中的存储

1. 整数在内存中的存储 在讲解操作符的时候&#xff0c;我们就讲过了下⾯的内容&#xff1a; 整数的2进制表⽰⽅法有三种&#xff0c;即 原码、反码和补码 有符号的整数&#xff0c;三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&#xff0c;⽤…

NO9 蓝桥杯单片机实践之串口通信的使用

1 回顾 串口通信的代码编写结构还是与中断一样&#xff0c;不同的是&#xff1a; 初始中断函数条件涉及到串口通信相关的寄存器和定时器1相关的寄存器&#xff08;定时器1用于产生波特率&#xff09;&#xff0c;但初始条件中的中断寄存器只考虑串口通信而不考虑定时器1。 vo…

Matlab|计及电池储能寿命损耗的微电网经济调度

目录 1 主要内容 储能寿命模型 负荷需求响应 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《考虑寿命损耗的微网电池储能容量优化配置》模型&#xff0c;以购售电成本、燃料成本和储能寿命损耗成本三者之和为目标函数&#xff0c;创新考虑储能寿命损耗约…

程序员如何兼职赚小钱?

程序员由于有技术和手艺其实兼职赚钱的路子还是挺多的&#xff0c;只要你有足够的时间。 1. 做外包 这是比较传统的方式&#xff0c;甲方在一些众包平台上发布开发任务&#xff0c;你可以抢这个任务&#xff0c;但是价格都比较便宜。 任务比较多的平台: 猪八戒、一品威客、开…

C语言指针详解(上)

一.什么是指针 指针是一种类型&#xff0c;用来存储变量的地址的类型 有哪些类型呢 字符指针&#xff1a;char* 整型指针&#xff1a;int* 浮点型指针&#xff1a;float* 双精度浮点型指针&#xff1a;double* 空指针&#xff1a;void* &#xff08;每一个类型的指针&a…

ubuntu没有有线网络的一种解决办法

直接使用下面的代码: sudo nmcli networking off sudo nmcli networking on转自 Ubuntu 20.04 LTS 有线网络设置消失了怎么办 - 知乎 (zhihu.com) 评论区第一条 理客Lick - 知乎 (zhihu.com)Keep it simple and stupid

Huawei设备基础配置

<Huawei>system-view # 进入系统视图 [Huawei]telnet server enable # 开启设备telnet功能 [Huawei]user-interface vty 0 4 # 开启登录端口0-4并进入用户接口视图 [Huawei-ui-vty0-4]protocol inbound telnet # 通过telnet协议登录 [Huawei-ui-vty0-4]authentic…

如何安装和卸载SFP光模块

SFP光模块的安装和拆卸是简单直接的过程。然而&#xff0c;任何非标准操作都可能导致隐式损坏甚至永久故障。您需要参考及时更新的光模块的数据表或用户手册&#xff0c;以熟悉其特性和锁定机制。 准备工作 常见事项 拆卸和插入SFP光模块可能会缩短其使用寿命&#xff0c;因…

Git工具的详细使用

一、环境说明 [rootgit ~]# getenforce Disabled [rootgit ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (d…

Selenium浏览器自动化测试框架详解

selenium简介 介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google C…

【转】linux设置密钥登录(只允许密钥登录)

转, 原文: https://www.cnblogs.com/dyj--php/p/9656016.html ----------------- 一.root用户使用这条命令看看家目录有没有(.ssh文件夹),cd .ssh,如果存在就会进入这个文件夹,不存在就(makedir .ssh),修改.ssh这个文件夹权限(chmod 700 .ssh),查看.ssh文件夹下是…