首页 > 编程语言 >Java学习日记 Day3 我怀疑世界就是一个巨大的草台班子

Java学习日记 Day3 我怀疑世界就是一个巨大的草台班子

时间:2024-01-17 23:34:43浏览次数:40  
标签:Java String Day3 草台班子 集合 数组 泛型 指针 底层

JavaSE:
①包装类:对比基础数据类型有更高级的功能。另外在容器中(或者叫集合)包装类有重要的作用。容器中只能存放包装类,不能存放基础数据类型。
包装类一些特性:被final修饰,不能有子类了。。。jdk1.0就有,是开服玩家。。。其实在代码底层中包装类封装了一个int。。。
自动装箱自动拆箱:是int和Integer之间的相互转化。
②Math类:Math类无需导包。。。也不能被继承。。。直接通过类名调用方法,无需使用对象。。。
③String类:无需导包。。。也不能被继承。。。直接通过类名调用方法,无需使用对象。。。
要重点说的是toString和Valueof的区别,都是转换字符串,而toString是Object类中自带的,子类也可以重写。但Valueof是String中的方法,使用的话是用类名直接引用。
④String、StringBuffer、StringBuilder的区别:总的来说String是内容不可变的字符串,也就是改变字符串内容必须改变地址,在底层源码中他的长度被写死了。而后两者可以通过方法改变长度。StringBuilder是jdk1.5之后的,效率高。线程不安全。StringBuffer是jdk1.0的开服玩家,效率低点但是线程安全,不过最多使用的还是StringBuilder。
⑤集合:为什么要有集合?那就是集合比数组强在哪里,数组是固定大小的,而集合可以改变大小(这在集合的底层实现中也有体现)。
集合分为两类,一种是Collection,分为List和Set,一种是Map,一种是储存一个数值,一种是储存一对。
⑥Collection接口:有一些常用方法,可以细分为增删改查几种吧。比较重要的是Collection的遍历用的是增强for循环。
⑥List接口:有一些常用方法,也可以细分为增删改查几种。
⑥ArrayList:重要的是他的底层源码,我们能发现其实他在底层实现中是一个数组,和一个代表数组大小的int值。
常常和Vector进行比较,底层实现是一样的,但Vector是线程安全的,可惜效率太低。同时在扩容是是变成2倍。
而ArrayList在1.7时初始大小是10,1.8之后初始大小是0,第一次add时才变成10,同时扩容会变成1.5倍数。
⑦泛型:为什么要有泛型呢,是给类贴上了标签,这个标签是各种引用数据类型。在jdk1.5之后有的东西。其实就是麻烦一次,方便了之后的操作。
⑧自定义泛型结构:没太明白是干嘛用的,感觉也是规范化一些东西,规范代码,这样错误就会在运行之前(也就是编程的时候就出现)。
当继承泛型类的时候自己跟父类指定用的集合一样,反之父类不指定自己也是泛型类。
泛型方法,不是带泛型就是泛型方法,参数中的泛型不是类中的泛型才可以!!!泛型方法可以是静态方法。但是静态方法中不能使用类中的泛型。为什么?因为静态方法最先加载!!!
通配符:就是一个问号,啥都适用。泛型受限也是基于他的一个东西,super就是定了他的下限,extend就是定了他的上限。

算法:
赎金信+三数之和+四数之和。
①赎金信:代码随想录上推荐用的数组,我还是用了HashMap,感觉直观上HashMap更适合这道题,不过确实数组的速度更快。
总的来说先遍历杂志数组,看看每个单词有多少个,再看看赎金信数组每个单词有多少个。前者在map中加,后者减,有负数就返回false。
②三数之和:用了三个指针,还挺好理解。步骤就是先排序,然后根据第一个数判断需不需要剪枝。然后a去重。然后根据和来调整后两个指针的位置,然后后两个指针也要去重。
③四数之和:多一个指针,多一重循环,本质是一样的。
②③两题的去重是关键,要明白为什么判断nums[i]和nums[i-1]是否相等。

明天把集合看完吧,少看点课了。。这周应该能结束JavaSE中阶,还有IO、网络编程、多线程。。
双指针的题还可以,明天给过了。ojbk,睡觉

标签:Java,String,Day3,草台班子,集合,数组,泛型,指针,底层
From: https://www.cnblogs.com/zygacmg/p/17971473

相关文章

  • Java登陆第三十一天——Filter
    好好好,好久不见了。不多说,继续干。Filter即过滤器,专用于过滤客户端所发送的请求。生活中的过滤器筛子地铁闸门公司前台保安以上举例都是生活中的过滤器。在代码中,过滤器的作用是控制访问资源。Filter所有的过滤器都要实现Filter接口,Filter接口方法如下:方......
  • RabbitMQ学习四 java客户端连接RabbitMQ
    RabbitMQ的工作模式,可以参考官网:https://www.rabbitmq.com/getstarted.html一、简单方式以下两种都是生产者直接发消息给队列,不通过交换机。且发送给队列的消息只能被消费一次。比如一个队列被C1和C2消费,在队列中的消息只会被一个消费者消费。生产者代码逻辑图代码如下:p......
  • github copilot 在java中使用
    如何在Java中使用GitHubCopilot引言在本文中,我将向您展示如何在Java开发中使用GitHubCopilot。GitHubCopilot是一款由GitHub开发的人工智能代码建议工具,可以帮助开发者提高代码编写速度和质量。对于刚入行的小白,学习如何使用GitHubCopilot可以极大地提升开发效率和学习曲线。......
  • stable diffusion java开发
    实现“stablediffusionjava开发”作为一名经验丰富的开发者,我将帮助你了解和实现“stablediffusionjava开发”。下面是整个过程的步骤表格:步骤操作步骤1确定项目需求和目标步骤2设计系统架构步骤3编写代码步骤4运行和测试代码步骤5调试和修复错误......
  • Java进阶1
    Struct顺序packagecom.zzl.struct;publicclassShunXuDemo1{publicstaticvoidmain(String[]args){System.out.println("hello1");System.out.println("hello2");System.out.println("hello3");......
  • javaStable Diffusion
    教你实现“javaStableDiffusion”流程及代码示例1.简介JavaStableDiffusion(JSD)是一种用于在Java应用程序中实现稳定的扩散算法的技术。它可以帮助开发者在分布式系统中实现可靠的消息传递和数据同步。本文将向你介绍JSD的实现过程,并提供相应的代码示例。2.实现流程下面是......
  • 正则表达式复习七——JavaScript 中使用
    JavaScript使用JavaScript的正则表达式是由RegExp对象表示的,同时也可以使用正则表达式字面量。1.使用RegExp对象letpattern=newRegExp("pattern","flags");pattern是字符串形式的正则表达式模式。flags是字符串形式的修饰符,可以包含i,g,m等。letpattern......
  • JAVA碎知识
    1、Java中初始化数组的方法:在Java中,可以使用以下几种方法来初始化数组:(1)静态初始化:指定数组的初始值,并在声明数组时进行初始化。语法如下:dataType[]arrayName={value1,value2,...,valueN};//示例:int[]numbers={1,2,3,4,5};String[]names={"Alice",......
  • Java异常
    Java异常一、java异常概念和分类1、Java概念异常(Exception)就是程序在运行过程中出现的一些错误,我们通过面向对象的思想,把这些错误也用类来描述,那么一旦产生一个错误,即就是创建了某一个错误的对象,这个对象就是我们所说的异常对象。以下是常见的异常:(1)IndexOutOfBoundsException:......
  • Java期末知识点总结(不全)
    Java知识点Lesson1认识javaLesson2-3认识对象:封装数据为类1.类中有成员变量(属性/字段)+成员函数(方法),类是对象的模板/缔造者/抽象/类型2.局部变量和成员变量的区别:(1)定义位置不同:定义在类中的变量成员变量,定义在方法或{}中的是局部变量(2)内存中位置不同:成员变量在堆......