类和对象以及数组工具类的常用方法

news2024/11/25 12:39:52

文章目录

  • 一、类和对象
  • 二、数组工具类的常用方法

一、类和对象

1、对象没人引用时,会被自动回收
2、对象一定在堆上,引用变量不一定在栈上
3、this表示当前对象的引用,谁调用eat方法(eat方法里有this),谁就是this。this.data访问当前对象的属性,this.func()访问当前对象的方法
4、初始化对象成员变量和给对象成员变量赋值的区别,运用构造方法(该方法没有返回值类型,方法名和类名相同)初始化对象成员变量。用this()调用当前类当中的其它构造方法,()中可有参数,看()中的参数匹配到哪个构造方法则调用哪个构造方法,只能在当前的构造方法内部使用,只能放在第一行。可用idea生成构造方法,鼠标右击找到Generate,再点击Constructor
5、类中没有package语句,则该类被放到一个默认的包中,这个默认的包是src。default(默认包访问权限),如成员变量前没有加访问修饰限定符,同一个包下的不同类之间可以相互访问这个成员变量(这个是default的最大访问权限)
6、静态成员变量和静态成员方法(static修饰,也叫类变量和类方法,static不能修饰局部变量),通过类调用(类.×××),不依赖于对象。静态方法内部不能直接调用非静态成员方法(调用则要new一个对象,再通过对象的引用调用)或者直接调用非静态成员变量,static修饰的方法里面不能使用this,因为静态成员变量和静态成员方法不依赖于对象,而this是当前对象的引用。非静态方法内部能直接调用静态成员方法。非静态方法之间可以直接调用。
7、成员变量(属性、字段),成员方法(行为)。
8、静态成员变量一般不放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性。用静态代码块(static加花括号)对静态成员变量进行初始化,静态代码块在类里面,方法外面。先执行静态代码块,再执行构造代码块(实例代码块),再执行构造方法,静态代码块只执行一次。静态代码块只要类被加载就会被执行,构造代码块(实例代码块)实例化对象的时候才会被执行。

class Student{
    private String name;
    private String gender;
    private static String classRoom;
    //实例代码块
    {
        this.name = "ZhangSan";
        this.gender = "man";
        System.out.println("instance");
    }
    //静态代码块
    static {
        classRoom = "4";
        System.out.println("static");
    }
    public Student(){
        System.out.println("Student init");
    }
    public static void main(String[] args) {
        Student s1 = new Student();
        Student s2 = new Student();
    }
}

在这里插入图片描述
9、package语句用于说明本文件处于哪个包当中
10、实例化对象时。父类静态代码块先于子类静态代码块执行,静态代码块先执行且只执行一次;然后执行父类构造代码块(实例代码块)和父类构造方法;最后执行子类构造代码块(实例代码块)和子类构造方法。先执行父类和子类静态的,再执行父类的实例和父类的构造,最后执行子类的实例和子类的构造
11、final修饰变量后,变量变成常量,常量不能被修改,如final修饰数组名,则数组名这个引用变量中存储的值(地址)不能被修改;final修饰的类叫密封类,密封类不能被继承
12、protected修饰,访问不同包之间的子类(这个是protected的最大访问权限)
13、组合:如在一个类当中用其它类作为类型定义变量(在类中用别的类型的对象作为成员)。能用组合尽量用组合
14、实例化对象(new Base())时相当于调用了一个构造方法
15、new Rect()是匿名对象,匿名对象的缺点是每次使用都要重新实例化

Rect rect = new Rect();
rect.draw();
rect.draw();
new Rect().draw();
new Rect().draw();//每次使用都要重新实例化

二、数组工具类的常用方法

Arrays.sort(arrays);//数组排序,arrays是数组名,即数组的引用

System.out.println(Arrays.toString(arrays));//将数组转换为字符串输出

int[] copy = Arrays.copyOf(array,array.length*2);//拷贝array数组,拷贝的长度为array.length*2,如果拷贝的长度太长则扩容
int[] copy = Arrays.copyOfRange(array,13);//拷贝array数组中1到3下标的内容,但因为Java[1,3),所以拷贝到的只是1下标和2下标的内容,如果拷贝的长度太长则扩容

System.out.println(Arrays.binarySearch(array,15));//Arrays工具类实现的二分查找,在数组中找15
Arrays.binarySearch(int[] a, int fromIndex, int toIndex, int key)//在数组指定范围内进行二分查找

boolean flg = Arrays.equals(array1,array2);//比较两个数组对应下标的数据是否一样

int[] arr = new int[]{1, 2, 3};
Arrays.fill(arr, -1);//帮数组填充数据,这里将数组内容全部填充(这里是修改)为-1
fill(int[] a, int fromIndex, int toIndex, int val)//在数组指定范围内进行填充,指定的范围是[)

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

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

相关文章

C++11 使用using定义别名(替代typedef)::作用域运算符

typedef 一切合法的变量的定义可以转换为类型 typedef unsigned int uint_t;示例如下: 使用 typedef 重定义类型是很方便的,但它也有一些限制,比如,无法重定义一个模板。 现在,在 C11 中终于出现了可以重定义一个模…

Kerberos从入门到精通以及案例实操系列(一)

1、Kerberos部署 1.1、Kerberos概述 1.1.1、什么是Kerberos Kerberos是一种计算机网络认证协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构&a…

STC89C52+DS18B20实现环境温度检测(数码管显示温度)

一、项目介绍 温度检测是工业自动化、生产线等众多领域中常见的应用场景之一,能及时准确地监测温度对于保障生产安全和提高生产效率有着非常重要的作用。而在现代的电子制造行业中,使用单片机和传感器等电子元器件进行温度检测已经成为了一个比较成熟的技术方案。 本项目选…

Qcom_hexagon编译自动获取目录和特定文件的方法

一,简介 本文主要介绍,如何在高通hexagon ide中的hexagon.min中添加获取目录和.c文件的方法,供参考。 二,具体命令 OBJ_PATH : ./awinic_sp_module/algo_libINCLUDE_PATH : $(shell find $(OBJ_PATH ) -type d) SRC_C_FILE : …

synchronized 的底层原理

tip: 作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 文章目录 一、synchronized 的底层原理二、synchronized 的锁升级原理1、偏向锁2、轻量级锁3、重量级锁 一…

大幅提升iOS编译速度的cocoapods二进制化插件介绍

1. 背景 驾校一点通iOS项目是采用是cocoapods来管理组件的,又经过多年的组件化发展,目前组件已经达到了120的数量。在这种组件规模下,主工程的打包时间也从最开始的几分钟增加到十几分钟(M1)、二十几分钟(…

restTemplate转发Https请求

代码架构 package com.http.controller;import com.http.RestTemplateConfig; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework…

Vercel部署个人博客

vercel 部署静态资源网站极其方便简单,并且有可观的访问速度,最主要的是免费部署。 如果你还没有尝试的话,强烈建议去使用一下。 演示博客演示http://202271.xyz/?vercel vercel 介绍 注册账号 进入Vercel官网https://vercel.com&#x…

Android studio安装教程(图文详解,简单搞定)

一 下载 根据自己计算机选择对应版本点击下载 https://developer.android.google.cn/studio 二 安装Android Studio Android Studio 是Google提供的一个Android开发环境,基于IntelliJ IDEA类似 Eclipse ADT,他集成了Android 所需的开发工具。需要注意…

RocketMq的集群的搭建(2主2从异步复制集群模式)

一 RocketMq集群搭建 1.1 说明 本案例采用2m-2s-async的方式搭建集群。 实际项目中,为了达到高可用,一般会使用dleger。 https://blog.csdn.net/wssc63262/article/details/126003507 1.2 集群规划说明 集群规划说明: nameserver是一个…

机器学习——集成学习(装袋法Bagging、提升法Boosting、梯度提升决策树GBDT、随机森林RF)

集成学习 集成学习通过构建并结合多个学习器来完成学习任务 集成方法是用多种学习方法的组合来获取比原方法更优的结果 使用于组合的算法是弱学习算法 即分类正确率仅比随机猜测略高的学习算法 但是组合之后的效果仍可能高于强学习算法 即集成之后的算法准确率和效率都很高…

# 车载软件架构 —— 闲聊几句AUTOSAR OS(三)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标准。到最…

程序员从0到收获心仪offer,我靠训练营实现了180度逆袭!

我相信,在未来的职场中,我也能通过这段时间养成的学习习惯和生活习惯让自己一步步成为更好的自己,以自己为荣 我在大学里主修计算机科学与技术,一个普通的院校,一个算是常见的专业,我知道我的学历和一些其他…

Tomcat的部署(贼详细)

目录 一、Tomcat服务器简介 1、Tomcat服务器 2、Tomcat三大核心组件 3、 Java Servlet 4、JSP全称Java Server Pages 5、 Tomcat 功能组件结构 6、 Container 结构分析 7、Tomcat 请求过程 二:Tomcat部署与安装 1.关闭防火墙,上传所需软件包 2.安…

前端、后端工程师学习路线

学习的平台推荐 视频平台: 慕课:http://www.imooc.com/ 腾讯课堂:https://ke.qq.com/ 教程平台 菜鸟:https://www.runoob.com/ W3:https://www.w3school.com.cn/ yibai:https://www.yiibai.com/ 前端学习路…

c++—STL(六大组件)

一、STL概述 1. STL概述 (1)STL定义:STL(standard template library),标准模板库,是一个高效的c程序库,重在提高了代码的复用性;主要包含了常用的数据结构和基本算法&am…

一分钟学一个 Linux 命令 - mkdir 和 touch

前言 大家好,我是god23bin。欢迎来到《一分钟学一个 Linux 命令》系列,今天需要你花两分钟时间来学习下,因为今天要讲的是两个命令,mkdir 和 touch 命令。前一个命令是操作目录的,后一个命令是操作文件的。 建议学完手…

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

有道是“一花独放不是春,万紫千红春满园” 我们不能只满足于 眼前所谓的 “够用、能用” 的少量知识,而不去深入学习探究,进而不慎封锁了自己的见识 和 更多 创新开发上的可能性。 曾经仅满足于学习了蓝桥杯单片机的三个外部晶振 定时器&am…

日撸java三百行day58-59

文章目录 说明Day58 符号型数据的 NB 算法1.基础理论知识1.1 条件概率1.2 独立性假设1.3 Laplacian 平滑 2. 符号型数据的预测算法跟踪2.1 testNominal()方法2.1.1 NaiveBayes 构造函数2.1.2 calculateClassDistribution()2.1.3 calculateConditionalProbabilities()方法2.1.4 …

D*算法详解 (D星算法 / Dynamic A*算法/ Dstar算法)(死循环解决)【编辑中】

所需先验知识(没有先验知识可能会有大碍,了解的话会对D*的理解有帮助):A*算法/ Dijkstra算法 何为D*算法 Dijkstra算法是无启发的寻找图中两节点的最短连接路径的算法,A*算法则是在Dijkstra算法的基础上加入了启发函数…