javaApI(Application Programming Interface)应用程序编程接口

ApI概念

Apl:指的是官方给开发人员提供的说明文档,对语言中有哪些类,类中有哪些方法进行说明

Objict 类

java.lang.Object

是java类体系结构中最顶层的类

Object可以表示java中任意的类

 

 Object类中的方法

toString()

 输出一个对象,但是对象在内存中,是不能输出的
当输出一个对象时,会默认调用此对象的toString(),
如果类中没有定义toString(),会调用object类中toString(),
Object类中toString(),是把对象在内存中的哈希值返回(以16进制返回)
把对象信息以字符串形式输出

equals()

boolearn equals(Object obj) 判断两个对象是否相等
Object类中的equals
public boolean equals(Object obj){
return (this==obj)默认比较的时两个对象的地址是否相等

public boolean equals(Object obj) {
    if(obj instanceof person){
        person other = (person) obj;
        return this.name.equals(other.name)&&this.age==other.age;
    }

    return false;
}

 == 比较等号两边是否相等
当==用于基本类型比较时,比较的是变量值是否相等
当==用于引用类型比较时,比较的是对象的地址是否相等

Arrays类

 java,util.Arrays类

● equals 方法

比较两个数组对象中元素是否相等.

而数组对象中的equals用来判断与另一个数组对象是否相等。

声明:public static boolean equals(type[]a,type[]a2) 参数的类型可以是原生数据类型和引用类型的任意一种类型

System.out.println(  Arrays.equals(a,b));

● copyOf方法

数组复制,将指定数组中的元素复制到一个指定长度的新数组中,并返回 新数组.

int []d=Arrays.copyOf(a,10);
System.out.println(d);

●fill方法

将指定的int值分配给指定的int数组的每个元素

Arrays.fill(b,0);
System.out.println(Arrays.toString(b));

●toString方法

返回指定数组内容的字符串表示形式。

System.out.println(Arrays.toString(d));

●sort -排序

作用于数组的所有元素 public static void sort(type[] a)

作用于数组指定范围内的元素

将指定的类型数组所有元素按数字升序进行排序。

long [] a={5,4,3,2,1,0};
Arrays.sort(a);//0--length-1
//Arrrays.sort(a,开始位置,结束位置(不包含))
Arrays.sort(a,0,4);
System.out.println(Arrays.toString(a));

●binarySearch -使用二分搜索算法搜索指定数组

/*
binarySearch() 二分搜素算法查找指定的元素位置,如果未找到返回负数
 */
int []b={2,3,4,1,5};
int index=Arrays.binarySearch(b,1);
System.out.println(index);
Arrays.sort(b);
int flag=Arrays.binarySearch(b,1);
System.out.println(flag);

●自定义类实现Comparable接口

 重写compareTo方法

我们一个类进行排序,那么这个类必须实现Compaareable接口,

指定一个排序方式(这样所有的类都使用统一的方法进行排序了) 用来指定排序规则, 可以执行用类中那个属性作为排序的项
这个方法在sort()方法底层使用

@Override
public int compareTo(student o) {
    return this.id-o.id;
}
------------------------------------------   
   Arrays.sort(students);
        System.out.println(Arrays.toString(students));

        String s="a";
        String sr="b";
        System.out.println(s.compareTo(sr));

基本数据类型封装类

基本类型包装类:

Java中的基本数据类型使用8个关键字声明的,不是面向对象的

●Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进表示,这样八个和基本数据类型对应的类统称为包装类.

●包装类(如:Integer,Double等)这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作方法。

类的用途主要包含两种:

● 作为和基本数据类型对应的类类型存在。

● 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操 作方法。

类型转换:

自动拆箱:把引用类型 转为 基本类型

自动装箱:把基本类型 转为 引用类型

会默认调用valueof()方法,

在valueof()方法中如果基本类型值在-128---+127之间,会从缓存数组中直接取出一个Integer对象,减少创建对象次数,如果两个值相同,获取的是同一个对象,基本类型如果不在-128---+127范围内,每次都创建一个新的Integer对象返回。

/*
自动拆箱
 */
int c=a.intValue();
int d=b;
/*
自动装箱
 */
int z=128;
Integer x=Integer.valueOf(z);
Integer y=z;

String类

java.lang.String

"abc"-->字符串对象 底层是一个char数组 private final char value[]

字符串对象创建方式:

1.String s="abc";

创建时先去字符串常量池中去查找有没有相同值的对象,如果没有,就创建一个字符串对象,并返回地址
如果字符串常量中已经存储,就不用创建新的,直接返回已存在对象的地址

String s1="abc";
String s2="abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
2.String s1=new String();

new 每次都是在堆中创建新的字符串对象

String s3=new String("abc");
String s4=new String("abc");
System.out.println(s3==s4);
System.out.println(s3.equals(s4));

字符串不变:

他们的值在创建后不能被更改

String s="abc";// abc   第一个字符串对象
s+="bcd";// abcbcd      第二个字符串对象
s+="aaa";// abcbcdaaa   第三个字符串对象
System.out.println(s);

String类方法

构造方法

String()

String(String s)

String(byte[] bytes)

public static void main(String[] args) throws UnsupportedEncodingException {
    String s1="你好";
    byte[] bytes=s1.getBytes("GBK");
    System.out.println(Arrays.toString(bytes));

    String s2=new String(bytes,"GBK");
    System.out.println(s2);

}

 public String(char[] value)

public static void main(String[] args) {
    String s="bac";
    char[] chars=s.toCharArray();
    Arrays.sort(chars);
    System.out.println(Arrays.toString(chars));
    String s2=new String(chars);
    System.out.println(s2);
}

●判断功能

boolean equals(Object obj)  比较字符串内容是否相等
boolean equalsIgnoreCase(String str)   比较字符串内容是否相等(忽略字母大小)
boolean contains(String str)    判断字符串中是否包含指定字串
boolean isEmpty()      判断字符串是否为"'空
boolean startsWith(String prefix)   判断字符串是否以指定开头
boolean endsWith(String suffix)     判断字符串是否以指定结尾

String s1=new String("aabc");
String s2=new String("aaBc");

System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.contains("bc"));
System.out.println(s1.isEmpty());
System.out.println(s1.startsWith("ab"));
System.out.println(s1.endsWith("bc"));

●获取功能

int length()    获取字符串长度 

char charAt(int index)   获取指定位置上的字符

int indexOf(String str) 返回的指定字符串首次出现的位置 

int indexOf(String str,int fromIndex)从指定位置开始查找,返回指定字符串首次出现的位置

int lastindexOf("ch")从后向前查找,返回的指定字符串首次出现的位置 

String substring(int start) 从在指定位置开始截取一个字符串到完

String substring(int start,int end)从在指定位置开始截取一个字符串副本到指定位置(不包含指定位置)
String s1="abcdefg";
System.out.println(s1.length());
System.out.println(s1.charAt(1));
System.out.println(s1.indexOf("c"));
System.out.println(s1.indexOf("d",1));
System.out.println(s1.substring(0));
System.out.println(s1.substring(1,5));

● 转换功能

byte[] getBytes() 将字符串转为byte数组

char[] toCharArray() 将字符串转为字符数组

static String valueOf(char[] chs) 

static String valueOf(int a)将传入的参数转为字符串类型 

String toLowerCase()将英文字母转为小写 

String toUpperCase() 将英文字母转为大写 

String concat(String str) 拼接指定字符串内容到字符串末尾,返回一个新的字符串对象

Stirng[] split(分割符);
public static void main(String[] args) {
  String s="ac;vna;nBX";
  String s1=String.valueOf("a");
    System.out.println(s1);

    System.out.println( s.toLowerCase());
    System.out.println(s.toUpperCase());
  String s3=  s.concat("dddd");
    System.out.println(s3);
String[] s4=s.split(";");
    System.out.println(Arrays.toString(s4));
}

● 替换功能

 String replace(char old,char new) 

String replace(String old,String new) 用新内容替换字符串中指定的字符串

replaceAll(String regex, String replacement)用新内容替换字符串中正则表达式匹配字符串  

replaceFirst(String regex,Stringreplacement) 用新内容替换字符串中正则表达式匹配字符串  ,只替换第一个 

 String s="adan2ca5";
s.replace("c","C");
s.replaceAll("\\d","a");
s.replaceFirst("\\d","d");
    System.out.println(s.trim());

● 去除字符串两端空格

String trim()

StringBuffer

StringBuffer是内容可以改变的字符串

public static void main(String[] args) {
    /*
    因为String声明的字符串对象值一旦给定就不能改变了,
    每次拼接都会创建新的字符串对象,耗时,占用空间

    StringBuffer是内容可以改变的字符串
    char[] value;没有使用final修饰,每次添加内容都是堆此数组进行操作,不会创建新的字符串对象
     */
    //SstringBuffer s1 =new StringBuffer("abcd");//创建 内容长度+16的char数组
    // StringBuffer s2=new StringBuffer();//空参的构造方法 指定底层数组长度是16
    StringBuffer s = new StringBuffer(11);
    s.append("acb");//向在字符串末尾添加内容
    s.append("acjanvnavn");
    s.insert(1, "a");//向指定的位置插入指定字符串
    s.deleteCharAt(2);//删除指定位置上的字符串
    s.delete(0, 2);//删除指定区域的元素  包含开始位置,不包含结尾
    s.replace(0, 3, "aaa");//替换字符串
    s.reverse();//反转字符串

}

String类StringBuffer类StringBuilder区别

● String:是字符常量,适用于少量的字符串操作的情况

● StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

● StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

● StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程 安全的

Math类

abs 绝对值
sqrt 平方根
pow(double a, double b) a的b次幂
max(double a, double b)
min(double a, double b)
random() 返回 0.0 到 1.0 的随机数
long round(double a) double型的数据a转换为long型(四舍五入)
System.out.println(Math.max(18,5));
System.out.println(Math.abs(-15));
System.out.println(Math.sqrt(16));
System.out.println(Math.random());
System.out.println(Math.pow(2,4));

Random类

● Random类概述 此类用于产生随机数

● 构造方法 public Random()

● 成员方法 public int nextInt() public int nextInt(int n)

Random random=new Random();
System.out.println(random.nextBoolean());
System.out.println(random.nextInt());
System.out.println(random.nextInt(35)+1);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python服务器监测测试策略与工具:确保应用的高可用性!

在构建高可用性的应用程序时,服务器监测测试是至关重要的一环。Python作为一种强大的编程语言,提供了丰富的工具和库来帮助我们进行服务器监测测试。本文将介绍一些关键的策略和工具,帮助你确保应用的高可用性。 1. 监测策略的制定&#xff…

matlab|基于DistFlow潮流的配电网故障重构(输入任意线路)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序采用适用于辐射状网络的DistFlow潮流模型,可输入任意故障线路编号,得到优化重构结果。这个程序是配电网故障重构可视化matlabyalmip的升级版,原来的程序是以电压质量作…

介绍 PIL+IPython.display+mtcnn for 音视频读取、标注

1. nn.NLLLoss是如何计算误差的? nn.NLLLoss是负对数似然损失函数,用于多分类问题中。它的计算方式如下:首先,对于每个样本,我们需要将其预测结果通过softmax函数转换为概率分布。softmax函数可以将一个向量映射为一个概率分布&…

第四套CCF信息学奥赛c++ CSP-J认证初级组 中小学信奥赛入门组初赛考前模拟冲刺题(阅读程序题)

第四套中小学信息学奥赛CSP-J考前冲刺题 二、阅读程序题 (程序输入不超过数组或字符串定义的范围&#xff0c;判断题正确填√错误填X;除特殊说明外&#xff0c;判断题 1.5分&#xff0c;选择题3分&#xff0c;共计40分) 第一题 归并排序 1 #include <iostream> 2 usi…

【Java程序设计】【C00285】基于Springboot的游戏分享网站(有论文)

基于Springboot的游戏分享网站&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的游戏分享网站 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块&#xff1a;在网站首页可以查看首页、游戏…

Linux环境基础开发工具使用篇(三) git 与 gdb

一、版本控制器-git 1.简单理解: ①git既是服务端&#xff0c;又是客户端 ②git会记录版本的变化 ③git是一个去中心化的分布式软件 git/gitee 是基于git仓库搭建的网站&#xff0c;让版本管理可视化 2.git 三板斧提交代码 查看安装的git版本 git--version 命令行提交代…

SpringMVC 学习(四)之获取请求参数

目录 1 通过 HttpServletRequest 获取请求参数 2 通过控制器方法的形参获取请求参数 3 通过 POJO 获取请求参数&#xff08;重点&#xff09; 1 通过 HttpServletRequest 获取请求参数 public String handler1(HttpServletRequest request) <form action"${pageCont…

Linux 文件操作

目录 C语言下的文件操作 Linux下的文件操作 文件描述符的前因后果 文件描述符的概念 文件描述符的分配规则 理解C语言的FILE结构体 Linux重定向 文件缓冲区 文件系统 文件系统的概念 ext2文件系统 对ext2的补充 虚拟文件系统的概念 软硬链接 C语言下的文件操作 …

Java零基础 - 关键字 instanceof

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

【深入理解设计模式】代理设计模式

代理设计模式&#xff1a; 代理设计模式是一种结构型设计模式&#xff0c;它允许你提供一个替代物或占位符来控制对其他对象的访问。在代理模式中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式&#xff0c;因为该模式涉及类和对象的组合。 概述 …

外包干了3个月,技术倒退明显...

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

笔记本hp6930p安装Android-x86避坑日记

一、序言 农历癸卯年前大扫除&#xff0c;翻出老机hp6930p&#xff0c;闲来无事&#xff0c;便安装Android-x86玩玩&#xff0c;期间多次入坑&#xff0c;随手记之以避坑。 笔记本配置&#xff1a;T9600,4G内存&#xff0c;120G固态160G机械硬盘 二、Android-x86系统简介 官…

【QT+QGIS跨平台编译】之五十二:【QGIS_CORE跨平台编译】—【qgsexpressionlexer.cpp生成】

文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…

Vue + Echarts页面内存占用高问题解决

Vue Echarts页面内存占用高问题解决 1.问题描述 目前使用的是Vue2 Echarts4.x的组合&#xff0c;页面如下所示。 就是一个类似于神策的数据看板页面&#xff0c;左侧是一个导航栏&#xff0c;右侧看板页面中包含很多个报表图片&#xff0c;其中报表页面中对Echarts图表进…

前端工程化面试题 | 18.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【AIGC大模型】跑通wonder3D (windows)

论文链接&#xff1a;https://arxiv.org/pdf/2310.15008.pdf windows10系统 显卡&#xff1a;NVIDIA rtx 2060 一、安装anaconda 二、安装CUDA 11.7 (CUDA Toolkit 11.7 Downloads | NVIDIA Developer) 和 cudnn 8.9.7(cuDNN Archive | NVIDIA Developer)库 CUDA选择自定…

人工智能 — 立体视觉、双目系统

目录 一、立体视觉1、定义2、应用领域3、原理 二、单目系统和双目系统1、单目系统2、双目系统 三、视差 一、立体视觉 1、定义 立体视觉是一种计算机视觉技术&#xff0c;其目的是从两幅或两幅以上的图像中推理出图像中每个像素点的深度信息。 2、应用领域 机器人、辅助驾驶…

《低功耗方法学》翻译——第十四章:电源切换网络设计

第十四章&#xff1a;电源切换网络设计 功率门控是在待机或休眠模式下降低漏电功率最有效的方法&#xff0c;但这种方法存在诸如休眠晶体管占用的硅面积、永久和虚拟电源网络的布线资源以及复杂的功率门控设计和实现过程等开销&#xff0c;影响设计风险和进度。 除了开销外&a…

万界星空科技商业开源MES

一、万界星空科技商业开源MES系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理&#xff0c;车间基础数据管理&#xff0c;计…

第三节:kafka sarama 遇到Bug?

文章目录 前言一、先上结果二、刨根问底总结 前言 前面两节&#xff0c;我们已经简单应用了sarama的两个类型Client和ClusterAdmin&#xff0c;其中有一个案例是获取集群的ControllerId&#xff0c;但是在后面的测试过程过程中&#xff0c;发现一个问题&#xff0c;返回的Cont…