4.6java学习总结

内部类(补充)

局部内部类

如果在外界定义会检测不到你所定义的局部内部类,直接报错.

public class Main {public static void print(int age,int b){class person{int age;public person(int age) {this.age = age;}void show(){System.out.println("内部类输出: "+age+"\t"+b); //调用外部方法的变量}}person a=new person(age);a.show();System.out.println("方法输出 :"+b);}public static void main(String[] args) {print(6,7);}
}

运行结果

匿名内部类

匿名内部类无法创建多个对象,因为他没有名字,它既可以写在成员位置,也可以写在局部位置.

这个匿名内部类的作用主要是替代那些只出现一次的类,当类只出现一次时我们只需要把他定义成匿名内部类就好,这样就可以不用去重新创建类了.一般当方法的参数是接口或者类时使用.

new Inter(){public void show(){}
}
//以上代码总体上来说是一个对象
//这一段代码完成了三个功能:
//实现或继承关系
//方法的重写
//创建对象//new                            //用空参构造创建匿名内部类的对象
//Inter                          //是已经定义好的一个接口或一个类
//这是一个匿名内部类(实现Inter接口或继承Inter类)
//{                              //类的开始
//    public void show(){
//    }
//}                              //类的结束
//以上是你创建的类的内容

样例:

public interface Animal {public void eat();
}
public abstract class Swim {public abstract void swim();
}
public class Main {public static void main(String[] args) {method(new Swim(){@Overridepublic void swim() {System.out.println("类的实现方法");}});method1(new Animal(){@Overridepublic void eat() {System.out.println("接口的实现方法");}});}public static void method(Swim a){                 //多态a.swim();}public static void method1(Animal a){              //多态a.eat();}
}

正则表达式

匹配一个字符

public class Main {public static void main(String[] args) {System.out.println("jjm".matches("[j-m][j-m][j-m]"));System.out.println("jjm".matches("[j-m]"));}
}

运行结果

注意:

在使用正则表达式的时候如果出现了\那么要在\前加上\.( '\' 表示转义字符,所以"\\d"才表示一个数字).

匹配多个字符

以上都是匹配只出现一次的情况的,那么如果出现多次呢?

public class Main {public static void main(String[] args) {System.out.println("jjm".matches("\\w{3}"));System.out.println("jjm".matches("\\w{2}"));System.out.println("jjm".matches("\\w +"));}
}

运行结果

泛型

为什么要用到泛型?

public class Student {String name;int age;public Student (){}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
import java.util.ArrayList;
import java.util.Iterator;public class Main {public static void main(String[] args) {//创建链表ArrayList list=new ArrayList();        //集合的基本使用//添加数据list.add(123);list.add("add");list.add(new Student("jjm",19));//遍历集合里的每一个元素Iterator it=list.iterator();while(it.hasNext()){//Student a=(Student )it.next();      这时我们用什么来报存集合里的元素呢??System.out.println();}}
}

这时我们用什么来报存集合里的元素呢?好像什么都不太适合.

所以泛型出现了,泛型的本质是为了将类型参数化, 也就是说在泛型使用过程中,数据类型被设置为一个参数,在使用时再从外部传入一个数据类型;而一旦传入了具体的数据类型后,传入变量(实参)的数据类型如果不匹配,编译器就会直接报错。

如果我们用泛型来规范数据的类型就会避免以上可能出现的错误.

泛型的定义: <类型>

使用的地方:类的后面(泛型类),方法上面(泛型方法),接口后面(泛型接口).

泛型类

泛型方法

泛型接口

注意:

1.泛型中不能写基本类型数据.

2.指定泛型的具体类型后,传递类型时可以传递该类型或其子类类型.

3.如果不写泛型,类型默认为Object.

我们在程序中加入泛型

import java.util.ArrayList;
import java.util.Iterator;public class Main {public static void main(String[] args) {//创建链表ArrayList<String> list=new ArrayList();//添加数据list.add("123");list.add("add");list.add("jjm");//遍历集合里的每一个元素Iterator<String> it=list.iterator();while(it.hasNext()){String a=it.next();System.out.println(a);}}
}

运行结果

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

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

相关文章

鸿蒙学习记录

问题小测记录 总结链接&#xff1a;小测总结 学习笔记&#xff1a;鸿蒙开发学习记录 1、 main_pages.json存放页面page路径配置信息。 2、在stage模型中&#xff0c;下列配置文件属于AppScope文件夹的是&#xff1f; app.json5 3、module.json5配置文件中&#xff0c;包含…

34-4 CSRF漏洞 - CSRF跨站点请求伪造

一、漏洞定义 CSRF(跨站请求伪造)是一种客户端攻击,又称为“一键式攻击”。该漏洞利用了Web应用程序与受害用户之间的信任关系,通过滥用同源策略,使受害者在不知情的情况下代表攻击者执行操作。与XSS攻击不同,XSS利用用户对特定网站的信任,而CSRF则利用了网站对用户网页…

Vue - 你知道Vue中key的工作原理吗

难度级别:中级及以上 提问概率:80% 在Vue项目开发中,并不推荐使用索引做为key,以为key必须是唯一的,可以使用服务端下发的唯一ID值,也不推荐使用随机值做为key,因为如果每次渲染都监听到不一样的key,那么节点将无法复用,这与Vue节…

HCLR-Net: 混合对比学习正则化与局部随机扰动用于水下图像增强

论文地址&#xff1a;https://doi.org/10.1007/s11263-024-01987-y 源码&#xff1a;https://github.com/zhoujingchun03/HCLR-Net 摘要&#xff1a; 由于水下环境复杂多样&#xff0c;导致光吸收、散射和色彩失真等严重退化现象&#xff0c;因此水下图像增强是一项重大挑战…

python 06实验

实验目的 &#xff08;1&#xff09;掌握Python流程控制语句&#xff0c;合理使用循环进行程序设计 &#xff08;2&#xff09;掌握Python数据结构&#xff0c;能熟练运用进行程序设计 &#xff08;3&#xff09;掌握Python的文件读写&#xff0c;能编写读取数据集的程序 1…

html5分步问卷调查表模板源码

文章目录 1.设计来源1.1 问卷调查11.2 问卷调查21.3 问卷调查31.4 问卷调查41.5 问卷调查51.6 问卷调查6 2.效果和源码2.1 完整效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/137454703 html5分…

【Linux】有关时间的命令(date、timedatectl)

专栏文章索引&#xff1a;Linux 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、data命令 1.介绍 2.常用参数 3.常用选项 二、timedatectl命令 1.介绍 2.常用子命令 一、data命令 1.介绍 date命令用于显示或设置系统的时间与日期&#xff0c;语法格式为&a…

影响力营销与AI的结合:Kompas.ai在搭桥角色中的独特价值

在数字化营销的新时代&#xff0c;影响力营销已经成为品牌建立信任和提升市场影响力的有效手段。通过与关键意见领袖&#xff08;KOL&#xff09;的合作&#xff0c;品牌能够利用KOL的信誉和影响力来扩大其市场覆盖范围和提升品牌认知度。然而&#xff0c;寻找与品牌价值观相契…

Embedding:跨越离散与连续边界——离散数据的连续向量表示及其在深度学习与自然语言处理中的关键角色

Embedding嵌入技术是一种在深度学习、自然语言处理&#xff08;NLP&#xff09;、计算机视觉等领域广泛应用的技术&#xff0c;它主要用于将高维、复杂且离散的原始数据&#xff08;如文本中的词汇、图像中的像素等&#xff09;映射到一个低维、连续且稠密的向量空间中。这些低…

校园圈子小程序,大学校园圈子,三段交付,源码交付,支持二开

介绍 在当今的数字化时代&#xff0c;校园社交媒体和在线论坛成为了学生交流思想、讨论问题以及分享信息的常用平台。特别是微信小程序&#xff0c;因其便捷性、用户基数庞大等特点&#xff0c;已逐渐成为构建校园社区不可或缺的一部分。以下是基于现有资料的校园小程序帖子发…

Advanced RAG 02:揭开 PDF 文档解析的神秘面纱

编者按&#xff1a; 自 2023 年以来&#xff0c;RAG 已成为基于 LLM 的人工智能系统中应用最为广泛的架构之一。由于诸多产品的关键功能&#xff08;如&#xff1a;领域智能问答、知识库构建等&#xff09;严重依赖RAG&#xff0c;优化其性能、提高检索效率和准确性迫在眉睫&am…

C语言之联合体

与结构体一样&#xff0c;联合体也是由多个成员组成&#xff0c;但是编译器只为最大的成员分配足够的空间&#xff0c;联合体的所有成员共用一块空间&#xff0c;所以联合体也叫共用体。 1.声明&#xff1a;类似结构体的声明&#xff0c;只是名字是union不是struct。声明并计算…