java项目总结2

3.了解Java的内存分配

4.重载

定义:在一个类中,有相同名的,但是却是不同参数(返回类型可以不一样

重载的优点:

1.减少定义方法时使用的单词

2.减少调用方法时候的麻烦(比如sum的返回两个数的和,这两个数可以为int,也可以为double)

具体请看如下:

 5.集合

导包import Java.util.ArryList;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringJoiner;
public class Main {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("A");  //list.add("B");list.add("B");list.add("C");//删除(按内容删除)boolean res1= list.remove("A");System.out.println(res1);//集合中没有R,所以无法删除boolean res2= list.remove("R");System.out.println(res2);System.out.println(list);//删除(搜引删除)
String str= list.remove(1);
System.out.println(str);System.out.println(list);//修改
String result=list.set(1,"Dd");
System.out.println(result);System.out.println(list);//查询String s=list.get(1);System.out.println(s);//长度
System.out.println(list.size());
System.out.println(list);}
}

结果如下:

static表示静态,是Java的一个修饰符,可以修饰成员方法,成员变量。

注意:1.静态方法中只能访问静态变量和静态方法。

2.非静态可以访问所有。

3.静态方法中没有this关键字

静态函数中无this,只能使用静态变量,非静态中含有this,可以使用静态函数及变量。

修饰成员变量:

修饰成员方法:

主函数:

6.继承

继承的优点:

1.可以把多个子类中的重复代码抽取到父类中,提高了代码的复用性。

2.子类可以在父类的基础上,增加其它的功能,使子类更加强大。

什么时候使用继承?

当类与类之间,存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码。

继承关系如下:注意:私有的成员变量虽然被继承下来了,但是却不能用。

虚方表:非private,非static,非final修饰



例子如下:

this指子类,super指父类!

如果有父类函数fun,但是子类需要功能的函数与之不同,则可以在子类中进行重写。

注意:

1.重写方法,名称一样,行参列表必须与父类一致。

2.子类重写父类方法时,访问权限必须大于等于父类(暂时了解:空着不写<protected<public)

3.子类重写父类方法时,返回值类型必须小于等于父类。

4.建议:子类重写的方法尽量与父类一致。

5.只有被添到虚方表中的方法才能被重写。

2.及修饰词

3.及指类型,子类小于父类,父类等于父类正确(Animal是父类,Dog是子类,及为返回值小于父亲)

7.多态

1.什么是多态

对象的多种形态。

2.多态的前提

1.有继承/实现关系

2.有父类引用指向子类对象

3.有方法的重写

public class Demo01 {public static void main(String[] args) {/*一个对象的实际引用类型是确定的,比如:new Student()new Person()*/Student s1 = new Student();//子类指向的引用//子类能调用的方法都是自己的或者是父类的//父类的引用可以指向子类(有父子关系就可以 ,比如用String肯定不行,因为没有指定的关系。)Person s2 = new Student();//父类指向的引用//父类型虽然可以指向子类,但是不能调用子类独有的方法Object s3 = new Student();s2.run();//运行结果为run,因为子类重写了父类的方法,执行的为子类的方法s1.run();s1.eat();//对象能执行哪些方法,主要看对象左边的类型,和右边的关系不大。/*((Student)s2).eat();强制转换后可以进行调用*/(s2.eat());//无法调用是因为 Person s2 = new Student();虽然new了Student()但不能使用Student()方法,要看Person里面有没有,有的话才能用。// 子类重写了父类的方法,执行的为子类的方法。子类和父类的方法都有的话,子类没有重写方法,就调用父类的,如果重写的话就带哦用子类的。}
}public class Person extends Object {   //在这里Person为子类,Object为父类public void run(){System.out.println("run");}
}
public class Student extends Person{   //在这里Student为子类,Person为父类@Override        //提示重写方法public void run() {System.out.println("son");}public void eat(){System.out.println("eat");}
}

3.多态的好处

1.使用父态作为参数,可以接受所有子类对象

2.体现多态的便利与扩展性

注意:

调用成员方法的特点:编译看左边,运行看右边

调用成员变量的特点:编译看左边,运行看左边

4.多态的弊端

假设Animal  a=new Dog();(Animal为父类,Dog为子类,Cat也为子类)

不能调用子类的特有功能,编译的时候会检查左边的父类中有没有这个方法,如果没有则直接报错。

解决方案:将其变回子类。(Dog d=(Dog)  a)强制转换,也可以如下:

拓展:instanceof关键字

作用:instanceof关键字可以判断两个类之间是否存在父子关系。

1.父类引用指向子类的对象。

      2.子类转换为父类(向上转型),不用强制转换。

      3.父类转换为子类(向下转型),强制转换后会丢失方法。

      4.方便方法的调用,减少重复的代码,提升代码的利用率并且使代码变得更简洁。

以上图为例,判断a是否为Dog类型,是则强制转换成Dog并用d表示。

网上示例:

public class Demo01 {public static void main(String[] args) {//Object>String//Object>Person>Student//Object>Person>Teacher//System.out.println(A instanceof B);//A和B是否有继承关系Object object = new Student();System.out.println(object instanceof Student);//trueSystem.out.println(object instanceof Person);//trueSystem.out.println(object instanceof Object);//trueSystem.out.println(object instanceof Teacher);//falseSystem.out.println(object instanceof String);//falsePerson person = new Student();System.out.println(person instanceof Student);//trueSystem.out.println(person instanceof Person);//trueSystem.out.println(person instanceof Object);//trueSystem.out.println(person instanceof Teacher);//false//System.out.println(person instanceof String);//编译错误}
}public class Person extends Object {public void run(){System.out.println("run");}
}
public class Student extends Person{@Overridepublic void run() {System.out.println("son");}public void eat(){System.out.println("eat");}
}

8.StringBulider

StringBulider是一个java里的关键字,可以看做一个容器,但是其是一个可以改变的容器,对其有四种操作可以进行,分别是添加元素(append),反转元素(reverse),获取长度(length)以及将StringBulider容器里面的东西变成字符串(toString)

作用:提高字符操作效率

public class Main {public static void main(String[] args) {StringBuilder b=new StringBuilder();b.append("yyz").append(18).append("nb").append("yyds");//这是其中的特殊处理方法,类似一条龙服务System.out.println(b);//字符串的反转b.reverse();System.out.println(b);//获取字符串长度int len=b.length();System.out.println(len);//将容器里面的东西赋给字符串String s= b.toString();System.out.println(s);}
}

结果如下:

9.StringJoiner

也可以看做一种容器,创建之后里面的内容是可变的。注意:需要导包

import java.util.StringJoiner;
public class Main {public static void main(String[] args) {StringJoiner a = new StringJoiner(",");a.add("111").add("222").add("333");int len1 = a.length();System.out.println(len1);System.out.println(a);String str1 = a.toString(); //转化成字符串形式System.out.println(str1);//中间,前面,最后(,【,】,这三个的放置位置)StringJoiner b = new StringJoiner(",", "[", "]");b.add("abc").add("bcd").add("ert");int len2 = b.length();System.out.println(len2);System.out.println(b);String str2 = b.toString();System.out.println(str2);}
}

结果如下:

拓展之调整字符串内容

1.用subString进行截取,然后拼接

2.将字符串变为字符数组,调整完了,在把字符数组变为字符串

String str1=str2.subString(0,2);(截取0到2的字符串)

String str1=str2.subString(2);(截取2以后的字符串)

10.包和final

使用其他类的规则:

1.使用同一个包中的类不需要导包。

2.使用Java.lang包中的类时,不需要导包。

3.其他情况都需要导包。

4.如果同时使用两个包中的同名类,需要用全类名。

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

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

相关文章

AUTOSAR汽车电子嵌入式编程精讲300篇-智能网联汽车CAN总线-基于迁移学习的驾驶行为评价方法

目录 前言 驾驶行为评价相关研究 系统模型和应用价值 挑战和解决方案 迁移学习在汽车工业中的应用 算法模型 驾驶行为评价模型的设计 驾驶行为数据的收集和预处理 驾驶行为评价模型的搭建 实验环境和数值结果 实验环境 MTL网络性能分析 前言 随着5G、GPS导航、…

《UDS协议从入门到精通》系列——图解0x84:安全数据传输

《UDS协议从入门到精通》系列——图解0x84&#xff1a;安全数据传输 一、简介二、数据包格式2.1 服务请求格式2.2 服务响应格式2.2.1 肯定响应2.2.2 否定响应 Tip&#x1f4cc;&#xff1a;本文描述中但凡涉及到其他UDS服务的&#xff0c;将陆续提供链接跳转方式以便快速了解他…

Python 3 CGI编程

Python 3 CGI编程 引言 CGI(Common Gateway Interface)是一种重要的互联网技术,它允许 web 服务器执行外部程序来处理用户请求,并生成动态内容。尽管现代 web 开发中 CGI 的使用已经不如以前那么普遍,被诸如 PHP、Python 的 WSGI、Java 的 Servlet 等技术所取代,但了解…

以太坊DApp交易量激增83%的背后原因解析

引言 最近&#xff0c;以太坊网络上的去中心化应用程序&#xff08;DApp&#xff09;交易量激增83%&#xff0c;引发了广泛关注和讨论。尽管交易费用高达2.4美元&#xff0c;但以太坊仍在DApp交易量方面遥遥领先于其他区块链网络。本文将深入探讨导致这一现象的主要原因&#…

机器人控制系列教程之Delta机器人奇异性分析

并联机器人奇异性 对于并联机构的奇异性问题比串联机构复杂。某些位形机构会失去自由度&#xff0c;某些位形机构会出现不可控自由度。其分析方法主要有几何法和代数法&#xff0c; 几何法&#xff1a; 即根据高等空间相关知识和机构中角度范围、干涉条件等推导出机构的奇异位…

力扣Hot100-19删除链表的倒数第n个节点(双指针)

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&#xff1a;…

OpenCV 图像最小外包围矩形的绘制及长短边的计算

目录 一、概述 1.1意义 1.2应用 二、代码实现 三、实现效果 3.1原始图像 3.2处理后图像 3.3数据输出 一、概述 最小外包围矩形&#xff08;Minimum Bounding Rectangle, MBR&#xff09;在计算机视觉和图像处理中的意义和应用非常广泛。它是指能够完全包围目标的最小矩…

phpexcel导入导出

前言&#xff1a; 如果你到处的excel软件打开有问题&#xff0c;下面有介绍解决办法 导入 1. composer init 初始化 2. 下载phpspreadsheet 这里需要注意php版本&#xff0c;需要大于7.2 composer require phpoffice/phpspreadsheet3. 编写代码 <?php require vendo…

WPF 3D绘图 点云 系列五

基本概念:点云是某个坐标系下的点的数据集。 可能包含丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等 点云可以将现实世界原子化,通过高精度的点云数据可以还原现实世界。万物皆点云。 通过三维激光扫描仪进行数据采集获取点云数据,其次通过二维影像进行…

Java | Leetcode Java题解之第213题打家劫舍II

题目&#xff1a; 题解&#xff1a; class Solution {public int rob(int[] nums) {int length nums.length;if (length 1) {return nums[0];} else if (length 2) {return Math.max(nums[0], nums[1]);}return Math.max(robRange(nums, 0, length - 2), robRange(nums, 1,…

小试牛刀-区块链代币锁仓(Web页面)

Welcome to Code Blocks blog 本篇文章主要介绍了 [区跨链代币锁仓(Web页面)] ❤博主广交技术好友&#xff0c;喜欢我的文章的可以关注一下❤ 目录 1.编写目的 2.开发环境 3.实现功能 4.代码实现 4.1 必要文件 4.1.1 ABI Json文件(LockerContractABI.json) 4.2 代码详解…

AI绘画-Stable Diffusion 原理介绍及使用

引言 好像很多朋友对AI绘图有兴趣&#xff0c;AI绘画背后&#xff0c;依旧是大模型的训练。但绘图类AI对计算机显卡有较高要求。建议先了解基本原理及如何使用&#xff0c;在看看如何实现自己垂直行业的绘图AI逻辑。或者作为使用者&#xff0c;调用已有的server接口。 首先需…

掌握Mojolicious会话管理:构建安全、持久的Web应用

掌握Mojolicious会话管理&#xff1a;构建安全、持久的Web应用 Mojolicious是一个基于Perl的高性能、异步Web开发框架&#xff0c;它提供了一套完整的工具来构建现代Web应用。会话管理是Web开发中的一个关键组成部分&#xff0c;它允许应用识别和保持用户的登录状态。本文将深…

单片机软件架构连载(3)-typedef

今天给大家讲typedef&#xff0c;这个关键字在实际产品开发中&#xff0c;也是海量应用。 技术涉及知识点比较多&#xff0c;有些并不常用&#xff0c;我们以贴近实际为原则&#xff0c;让大家把学习时间都花在重点上。 1.typedef的概念 typedef 是 C 语言中的一个关键字&…

WhatsApp机器人:提升客户服务效率的自动化工具

在数字化转型的浪潮中&#xff0c;客户服务领域正经历着一场革命。WhatsApp机器人以其即时性、便捷性和高效性&#xff0c;正在成为企业提升客户服务效率的有力工具。 引言 客户服务是企业与用户建立信任和忠诚度的关键环节。然而&#xff0c;随着用户基数的增长&#xff0c;…

DP:背包问题----0/1背包问题

文章目录 &#x1f497;背包问题&#x1f49b;背包问题的变体&#x1f9e1;0/1 背包问题的数学定义&#x1f49a;解决背包问题的方法&#x1f499;例子 &#x1f497;解决背包问题的一般步骤&#xff1f;&#x1f497;例题&#x1f497;总结 ❤️❤️❤️❤️❤️博客主页&…

【RflySim学习笔记】1.RflySim的绪论

目录 文章目录 目录1.RflySim 平台背景2.RflySim 平台特点3.RflySim 平台核心组件介绍3.1 CopterSim3.2 RflySim3D/RflySimUE5UE引擎&#xff1a;RflySim3D/RflySimUE5 3.3 QGroundControl地面站3.4 Python38Env3.5 MATLAB自动代码生成工具箱3.6 SITL/HITL批处理脚本3.7 PX4 Fi…

vue+js 监听组合按键 比如ctrl+f

vuejs 监听组合按键 比如ctrlf 需求&#xff1a;页面中有一个搜索功能&#xff0c;增加快捷键触发 <template><div id"app" ></div> </template><script> export default {mounted() {window.addEventListener(keydown, this.copyTe…

CentOS 7 arm64架构制作openssl 1.1.1w 二进制rpm包——筑梦之路

制作过程几乎和这篇CentOS 7 制作openssl 1.1.1w 版本rpm包 —— 筑梦之路_centos7 openssl 1.1.1 rpm包-CSDN博客 无差别&#xff0c;因此不再赘述。 本次制作主要修改了spec文件&#xff0c;将openssl安装路径修改为/usr/local/openssl。 2024年7月3日 二进制rpm包和src…

vue3实现多表头列表el-table,拖拽,鼠标滑轮滚动条优化

需求背景解决效果index.vue 需求背景 需要实现多表头列表的用户体验优化 解决效果 index.vue <!--/** * author: liuk * date: 2024-07-03 * describe:**** 多表头列表 */--> <template><el-table ref"tableRef" height"calc(100% - 80px)&qu…