软件设计之Java入门视频(11)

软件设计之Java入门视频(11)

视频教程来自B站尚硅谷:

尚硅谷Java入门视频教程,宋红康java基础视频
相关文件资料(百度网盘)
提取密码:8op3
idea 下载可以关注 软件管家 公众号

学习内容:

该视频共分为1-717部分
本次内容涉及300-329
在写代码时,总是需要来回切换界面来看代码要求,这里推荐Snipaste,可以把截图以窗口形式放在屏幕上
记录内容:

  1. toString()
  2. JUnit单元测试
  3. 包装类的使用
  4. static
  5. 单例设计模式

1、toString()

1)当输出一个对象的引用时,实际就是调用当前对象的toString()方法
2)像String、Date、File、包装类等都重写了Object类中的toString()方法

Customer cust = new Customer (); //构造一个customer类的对象
System.out.println(cust);
System.out.println(cust.toString());//效果相同
//输出 类名+@ +地址
//****toString定义****public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}
//String类的toString方法
String str = new String("AB");
System.out.println(str.toString());//输出AB

2、JUnit单元测试

目的:将测试代码单独作为单元进行单独测试
创建Java类进行单元测试:
1)此时Java类需要满足两个要求:(1)此类是public(2)此类提供公共的无参构造器
2)此类中声明单元测试方法:(1)方法权限是public(2)没有返回值,没有形参
单元测试方法上一行需要声明注解:@Test
1)在单元测试类中导入 import org.junit.Test;
2) 鼠标放在Test上,alt + enter 导入junit4 包 这是很重要的一步
写完代码后在需要执行测试方法的地方,右键测试方法名运行

package test;import org.junit.Test;import java.sql.SQLOutput;
import java.util.Date;public class JUnityTest {@Testpublic void testEquals(){String s1 = "MM";String s2 = "MM";System.out.println(s1);}@Testpublic void testEquals1(){String s1 = "GG";String s2 = "GG";System.out.println(s1);}
}

3、包装类的使用

1)Java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征
2)基本数据类型、包装类、String三者之间的转换重点

在这里插入图片描述

基本数据类型与包装类的转换

package test;import org.junit.Test;public class WrapperTest {//基本数据类型-->包装类:调用包装类的构造器@Testpublic void test1(){int num1 = 10;Integer in1 = new Integer(num1);System.out.println(in1.toString());Integer in2 = new Integer("123"); //这里只能是数字System.out.println(in2.toString());Order order = new Order();System.out.println(order.isMale); //falseSystem.out.println(order.isFemale);//null}//包装类-->基本数据类型:调用包装类的xxxValue()@Testpublic void test2(){Integer in1 = new Integer(12);int i1 = in1.intValue();System.out.println(i1); //12}@Testpublic void test3(){int num1 = 10;method(num1); //JDK5.0特性:自动装箱与自动拆箱}public void method (Object obj){System.out.println(obj.toString());}
}
class Order {boolean isMale;Boolean isFemale;
}

自动装箱与自动拆箱

基本数据类型–>包装类:自动装箱
包装类–>基本数据类型:自动拆箱

int num = 10;
Integer in1 = num;  //自动装箱
int num1 = in1 ; //自动拆箱

基本数据类型、包装类与String转换

package test;import org.junit.Test;public class WrapperTest {//基本数据类型、包装类-->String类型:调用String重载的ValueOf(Xxx xxx)@Testpublic void test1() {int num1 = 10;//方法1:连接运算String str1 = num1 + "";//方法2:float f1 = 12.3f;String str = String.valueOf(f1);//"12.3"System.out.println(str);}//String类型-->:基本数据类型、包装类 :调用包装类中的parseXxx(String s)@Testpublic void test2() {String str1 = "123";int num2 = Integer.parseInt(str1);String str2 = "TrUe";boolean b1 = Boolean.parseBoolean(str2);System.out.println(b1); //ture}
}

训练题1

当三元运算符中的两个表达式类型不同时,编译器会尝试找到一个共同的类型,以确保结果类型兼容。这通常通过自动类型提升(类型转换)来实现。

Object o1 = true ? new Integer(1) : new Double(2.0); //new Integer(1)自动提升为double类型了
System.out.println(o1);//1.0

训练题2

1)Integer内部定义了IntegerCache结构,IntegerCache中定义了Interger[]
2)其保存了从-128~127范围的整数,如果使用自动装箱方式给Integer赋值该范围的数值时,可以直接使用数组中的元素,不必在new一个新的。

package test;
import org.junit.Test;
public class WrapperTest {@Testpublic void method1() {Integer i = new Integer(1);Integer j = new Integer(1);System.out.println(i == j); //falseInteger m = 1;Integer n = 1;System.out.println(m == n);//trueInteger x = 128;//相当于new了一个Integer对象Integer y = 128;//相当于new了一个Integer对象System.out.println(x == y);//false}
}

4、static

1)static:静态的 可以用来修饰:属性、方法、代码块、内部类
2)使用statci修饰属性: 静态变量(类变量)
  a)属性按是否使用static修饰,分为静态属性非静态属性(实例变量)
  b)实例变量:我们创建类的多个对象,每个对象都单独拥有一套类的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值发生改变
  c)我们创建类的多个对象,每个对象共享同一个静态变量。当通过某一对象修改静态变量时,会导致其他对象调用此静态变量时,静态变量值是修改后的
  d)静态变量随着类的加载而加载,可以通过"类.静态变量"的方式调用
  e)静态变量的加载要早于对象的创建
  f)由于类只会加载一次,则静态变量在内存中也只会存在一份,存在方法区的静态域中
3)使用statci修饰方法:静态方法
  a)静态方法中,只能调用静态的方法或属性
  b)非静态方法中,既可以调用非静态的方法或属性,也可以调用静态的方法或属性
  c)`注意点:``静态方法内不能使用this、super关键字
4)如何确定一个属性/方法是否要声明static?
a)属性可以被多个对象共享的;
b)操作静态属性的方法,通常设置为static
c)工具类中的方法,习惯上声明为static,比如:Math、Arrays

类变量和实例变量的内存解析

在这里插入图片描述

5、单例设计模式

1)对某个类只能存在一个对象实例

饿汉式

package test;import java.sql.SQLOutput;public class CircleTest {public static void main(String[] args) {Bank bank1 = Bank.getInstance();Bank bank2 = Bank.getInstance();System.out.println(bank1==bank2);//返回true}
}class Bank{//1. 私有化类的构造器private Bank(){}//2. 内部创建类的对象//4. 要求此对象也必须声明为静态的private static Bank instance = new Bank();//3. 提供公共的方法,返回类的对象public static Bank getInstance(){ //static原因是外部不让生成对象,只能类去调return instance;//static方法只能操作static属性}
}

懒汉式

package test;
public class CircleTest {public static void main(String[] args) {Order order1 = Order.getInstance();Order order2 = Order.getInstance();System.out.println(order1==order2);}
}class Order{//1. 私有化类的构造器private Order() {}//2. 声明当前类的变量,没有初始化private static Order instance = null;//4. 要求此对象也必须声明为静态的//3. 提供公共的方法,返回类的对象public static Order getInstance() {if (instance == null) {instance = new Order();}return instance;}
}

区分饿汉式与懒汉式

饿汉式
1)坏处:对象时间加载过长
2)好处:饿汉式是线程安全的
懒汉式
1)好处:延迟对象的创建
2)坏处:目前写法线程不安全—>多线程再做修改

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

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

相关文章

Floyd判圈算法——环形链表(C++)

Floyd判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm),是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,求出该环的起点与长度的算法。 …

汽车信息安全--欧盟汽车法规

目录 General regulation 信息安全法规 R155《网络安全及网络安全管理系统》解析 R156《软件升级与软件升级管理系统》解析 General regulation 欧洲的汽车行业受到一系列法律法规的约束,包括 各个方面包括: 1.安全要求:《通用安全条例&a…

基于uniapp(vue3)H5附件上传组件,可限制文件大小

代码&#xff1a; <template><view class"upload-file"><text>最多上传5份附件&#xff0c;需小于50M</text><view class"" click"selectFile">上传</view></view><view class"list" v…

Halcon OCR字符识别(极坐标转换,字符识别)

Halcon OCR字符识别&#xff08;极坐标转换&#xff0c;字符识别&#xff09; 代码 * 1.加载图片 *************************************************** dev_close_window () read_image (Image, ./img) get_image_size (Image, Width, Height) dev_get_window (WindowHandle…

PyCharm

一、介绍 PyCharm 是 JetBrains 公司开发的一款功能强大的 Python 集成开发环境&#xff08;IDE&#xff09;。它专为 Python 开发设计&#xff0c;提供了一系列强大的工具和功能&#xff0c;帮助开发者更高效地编写、调试和维护 Python 代码。以下是对 PyCharm 的详细介绍&am…

MySQL之备份与恢复(六)

备份与恢复 文件系统快照 先决条件和配置 创建一个快照的消耗几乎微不足道&#xff0c;但还是需要确保系统配置可以让你获取在备份瞬间的所有需要的文件的一致性副本。首先&#xff0c;确保系统满足下面这些条件。 1.所有的InnoDB文件(InnoDB的表空间文件和InnoDB的事务日志…

数据结构——(双)链表

文章目录 1. 定义 2. 双链表和单链表的区别 3. 代码示例 3.1 双链表节点和结构定义 3.2 初始化双链表 3.3 返回双链表的长度 3.4 在指定位置插入元素 3.5 在末尾插入元素 3.6 删除指定位置的元素并返回被删除的元素 3.7 删除末尾元素 3.8 获取指定位置的元素 3.9 修…

maven项目使用netty,前端是vue2,实现通讯

引入的java包 <!-- 以下是即时通讯--><!-- Netty core modules --><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.76.Final</version> <!-- 使用最新的稳定版本…

Docker:三、安装nginx与tomcat

&#x1f341;安装常见服务 &#x1f332;安装nginx &#x1f9ca;1、搜索镜像 Ⅰ.hub docker上查询&#xff1a;https://hub.docker.com/_/nginx Ⅱ. 命令查询&#xff1a;docker search nginx &#x1f9ca;2、下载镜像 命令&#xff1a;docker pull nginx &#x1f9c…

应用了网络变压器的PC网卡连接转换器后不好连网,有掉线现象,但外接路由器无问题,可能是什么原因?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是应用了网络变压器的PC网卡连接转换器后不好连网&#xff0c;有掉线现象&#xff0c;但外接路由器无问题&#xff0c;可能是什么原因呢&#xff1f;如何解决呢&#xff1f; 首先&#xff0c;我们要了解传…

PMP–知识卡片--PDCA循环

记忆 PDCA&#xff1a;计划执行检查调整&#xff0c;计划观察动作&#xff1b;plan do check action 定义 PDCA循环的含义是将质量管理分为四个过程&#xff0c;即计划&#xff08;Plan&#xff09;、执行&#xff08;Do&#xff09;、检查&#xff08;Check&#xff09;、处…

使用maven搭建一个SpingBoot项目

1.首先创建一个maven项目 注意选择合适的jdk版本 2.添加依赖 2.在pom.xml中至少添加依赖 spring-boot-starter-web 依赖&#xff0c;目的是引入Tomcat&#xff0c;以及SpringMVC等&#xff0c;使项目具有web功能。 <!-- 引入 包含tomcat&#xff0c;SpringMVC&#xff0c…

一文了解常见DNS问题

当企业的DNS出现故障时&#xff0c;为不影响企业的正常运行&#xff0c;团队需要能够快速确定问题的性质和范围。那么有哪些常见的DNS问题呢&#xff1f; 域名解析失败&#xff1a; 当您输入一个域名&#xff0c;但无法获取到与之对应的IP地址&#xff0c;导致无法访问相应的网…

HTTP代理服务器:深度解析与应用

“随着互联网的飞速发展&#xff0c;HTTP代理服务器在网络通信中扮演着越来越重要的角色。它们作为客户端和服务器之间的中介&#xff0c;不仅优化了网络性能&#xff0c;还提供了强大的安全性和隐私保护功能。” 一、HTTP代理服务器的概念与作用 HTTP代理服务器是一种能够接…

win11如何关闭自动更新,延长暂停更新时间

网上有很多关闭自动更新的方法&#xff0c;今天给大家带来另一种关闭win11自动更新的方法。 1.winR打开运行窗口&#xff0c;输入regedit打开注册表 2.定位到以下位置&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 3.右键右边空白&…

实验四 图像增强—灰度变换之直方图变换

一&#xff0e;实验目的 1&#xff0e;掌握灰度直方图的概念及其计算方法&#xff1b; 2&#xff0e;熟练掌握直方图均衡化计算过程&#xff1b;了解直方图规定化的计算过程&#xff1b; 3&#xff0e;了解色彩直方图的概念和计算方法 二&#xff0e;实验内容&#xff1a; …

jenkins搭建部署前端工程 ,从0到1

一.java环境配置 1 安装tomcatjdk17 这个也行 3 安装maven3.3.9 安装教程参考 4 安装Jenkins 下载地址 参考教程 二、相关配置 1 访问http://localhost:8080/jenkins&#xff0c;进入Jenkins初始化页面&#xff0c;第一次启动时间可能有点长&#xff0c;耐心等待。进入成功后会…

vue3自定义全局指令和局部指令

1.全局指令 el&#xff1a;指令绑定到的DOM元素&#xff0c;可以用于直接操作当前元素&#xff0c;默认传入钩子的就是el参数&#xff0c;例如我们开始实现的focus指令&#xff0c;就是直接操作的元素DOM binding&#xff1a;这是一个对象&#xff0c;包含以下属性&#xff1a;…

2.5 C#视觉程序开发实例1----IO_Manager实现切换程序

2.5 C#视觉程序开发实例1----IO_Manager实现切换程序 1 IO_Manager中输入实现 1.0 IO_Manager中输入部分引脚定义 // 设定index 目的是为了今后可以配置这些参数、 // 输入引脚定义 private int index_trig0 0; // trig index private int index_cst 7; //cst index priva…

element-ui Tree之懒加载叶子节点强制设置父级半选效果

效果&#xff1a; 前言&#xff1a; 我们是先只展示一级的&#xff0c;二级的数据是通过点击之后通过服务器获取数据&#xff0c;并不是全量数据直接一起返回回来的。 问题&#xff1a; 当你设置了默认选中的子节点&#xff0c;但是由于刚进入页面此时tree中数据暂是没有这个…