4.6java学习总结

news2025/2/22 5:53:31

内部类(补充)

局部内部类

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

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(){
                @Override
                public void swim() {
                    System.out.println("类的实现方法");
                }
            }
        );
        method1(
                new Animal(){
                    @Override
                    public 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.coloradmin.cn/o/1577118.html

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

相关文章

探索Flutter混淆在提高应用安全性方面的作用

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…

ESP32调试笔记

目录 基于Thonny和micropythonESP32-CAM开发板无法连接Thonnyesp32cam局域网图传esp32代码上位机代码 基于Thonny和micropython ESP32-CAM开发板无法连接Thonny esp32cam有两个模式&#xff1a;下载模式、运行模式 两种模式的接线不同 IO0 短路 GND ! 正是因为两种模式接线…

LeetCode第十五题:三数之和【15/1000 python】

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 LeetCode解锁1000题: 打怪升级之旅htt…

第十二届蓝桥杯大赛软件赛省赛C/C++大学B组

第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、空间2、卡片3、直线4、货物摆放5、路径6、时间显示7、砝码称重8、杨辉三角形9、双向排序10、括号序列 1、空间 1MB 1024KB 1KB 1024byte 1byte8bit // cout<<"2…

软考-系统集成项目管理中级-新一代信息技术

本章历年考题分值统计 本章重点常考知识点汇总清单(掌握部分可直接理解记忆) 本章历年考题及答案解析 32、2019 年上半年第 23 题 云计算通过网络提供可动态伸缩的廉价计算能力&#xff0c;(23)不属于云计算的特点。 A.虚拟化 B.高可扩展性 C.按需服务 D.优化本地存储 【参考…

软件测试经典面试题:如何测微信的朋友圈?

这是一道非常经典的面试题&#xff0c;相信很多小伙伴在面试中都被面试官问到过这个问题&#xff0c;想要回答好这个面试题&#xff0c;我们首先要搞清楚面试官在考察候选者什么方向测试技能。其实不难猜出&#xff0c;面试官主要是想考察候选者测试用例设计能力。一般会从以下…

【游戏逆向】逆向基础之发包函数和线程发包

网络游戏是需要服务器的&#xff0c;这样才能玩家之间&#xff0c;服务器和玩家之间进行通信。 所以&#xff0c;我们的很多动作&#xff0c;都是要向服务器发包的&#xff0c;那么我们只要能够锁定正确的发包函数&#xff0c;就能很容易的通过调用关系找到该动作的函数&…

Springboot整合tess4j+tesseract实现OCR(文字识别),最新教程!

前言 不用引入什么dll&#xff0c;以及各种乱七八糟的东西。不废话&#xff0c;直接开始教程&#xff01;没有过多讲解里面的知识点&#xff0c;如有需要详细了解请加Qq:1101165230 1、Linux下安装与使用 1.1 安装tesseract&#xff08;复制粘贴敲回车&#xff0c;中间输入Y&…

王权与自由国际服测试资格申请 王权与自由steam国际服预约教程

《王权与自由》是一款由《剑灵》开发商NCsoft公开的旗下大型多人MMORPG新作游戏作品。攻城战&#xff0c;这是游戏中的一个重要玩法&#xff0c;主要分为攻城方和防守方。攻城方需要占领外城的遗址&#xff0c;并利用高轮&#xff08;包括碎石机、跳跃者和战斗航母&#xff09;…

JavaEE初阶之单例模式详解

目录 题外话 正题 单例模式 概念 优点 缺点 饿汉式单例模式 代码及详解 懒汉式单例模式 代码及详解 小结 题外话 昨天爬山去了,回来吃了个烧烤有点累,昨天旷了一天,每周稳定发个五篇文章是没什么太大问题的 正题 单例模式 概念 是一种常见的软件设计模式,确保一个类…

2024/4/2—力扣—栈的最小值

代码实现&#xff1a; typedef struct node {int val;struct node *next; } Node;typedef struct {struct node *top;int min; } MinStack;/** initialize your data structure here. */MinStack* minStackCreate() {MinStack *obj malloc(sizeof(*obj));obj->top NULL;ob…

ArcGIS Server 安装教程

​​​​​​​ 一、环境与文件准备 1.软件环境 已安装arcgis Desktop 10.2 2.安装及授权文件 二、安装步骤 1.下载安装包和授权文件&#xff0c;解压后打开ArcGIS Server10.2文件夹&#xff0c;打开ESRI.exe。 2.点击ArcGIS for Server后的Setup&#xff0c;开始安装。 3.…

scratch绘制六芒星图 2024年3月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

目录 scratch绘制六芒星图 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、实现流程 1、案例分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 …

[C++][算法基础]模拟堆(堆)

维护一个集合&#xff0c;初始时集合为空&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个数 x&#xff1b;PM&#xff0c;输出当前集合中的最小值&#xff1b;DM&#xff0c;删除当前集合中的最小值&#xff08;数据保证此时的最小值唯一&#xff09;&…

基于springboot的充电桩管理系统 (含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的充电桩管理系统1拥有三种角色&#xff1a;管理员、用户和维修人员 管理员&#xff1a;用户管理、充电桩管理、报修管理、类别管理、充电常识管理等 维修人员&#xff…

网易邮箱删除指定邮箱

一、 背景&#xff1a; 我们平时经常会收到很多恶意或者一些不重要的邮件&#xff0c;并且经常会堆满邮箱&#xff0c;导致看邮箱的时间一堆未读邮件&#xff0c;手动删除一些不重要的邮件需要一个一个的去点击&#xff0c;并且还要去判断是指定的发件人的邮件&#xff0c;像…

解决Xshell连接不上虚拟机

相信有很多同学和我一样遇到这个问题&#xff0c;在网上看了很多教程基本上都先让在虚拟机输入ifconfig命令查看ip地址&#xff0c;弄来弄去最后还是解决不了&#x1f62d;&#x1f62d;&#xff0c;其实问题根本就不在命令上&#xff0c;很大概率是我们的虚拟机没有开启网卡&a…

2024/4/2—力扣—最小高度树

代码实现&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ struct TreeNode* buildTree(int *nums, int l, int r) {if (l > r) {return NULL; // 递归出口}struct…

【SpringBoot整合系列】SpringBoot整合FastDFS(一)

目录 FastDFSFastDFS特点相关概念的介绍Tracker ServerStorage Server FastDFS环境搭建【CentOS 7】环境准备安装gcc和libevent上传安装包安装libfastcommon安装FastDFS拷贝配置文件到指定位置tracker配置storage配置client测试上传文件安装fastdfs-nginx-module模块到nginx第一…

9.java openCV4.x 入门-特殊的Mat类汇总(一)

专栏简介 &#x1f492;个人主页 &#x1f4f0;专栏目录 点击上方查看更多内容 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f9ed;文…