Java开发从入门到精通(十):Java常用的API编程接口:String

Java大数据开发和安全开发

  • (一)Java常用的API
    • 1.1 什么是API
    • 1.2 什么叫做包
      • 1.2.1 如何调用其他包的程序
    • 1.3 JAVA的API:String
      • 1.3.1 创建String对象
      • 1.3.2 String提供的操作字符串数据的常用方法
      • 1.3.3 String练习案例

(一)Java常用的API

1.1 什么是API

API(全称 Application Programming Interface:应用程序编程接口),就是别人写好的一些程序,给咱们程序员直接拿去调用即可解决问题的。

为什么要学别人写好的程序?

  • 不要重复造轮子
  • 开发效率高!

Java提供了哪些API给咱们使用呢?

  • JAVA的开发手册就集中介绍了这个API,但是不是所有的API都要学

在这里插入图片描述

1.2 什么叫做包

JAVA的开发手册中涉及的程序都是各种程序的包,那什么是包呢?

  • 包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。

建包的语法格式:
在这里插入图片描述
在这里插入图片描述

1.2.1 如何调用其他包的程序

在自己程序中调用其他包下的程序的注意事项:
如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)
如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问!导包格式:import 包名.类名
如果当前程序中,要调用lava提供的程序,也需要先导包才可以使用;但是ava.lang包下的程序是不需要我们导包的,可以直接使用。
如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。

package com.qianxin.bao;
import com.qianxin.bao.demo1.Demo;
import com.qianxin.bao.demo1.Test;
import java.util.Random;
import java.util.Scanner;
/**
 目标:掌握如何在自己的程序中调用其他包下的程序,有哪些注意事项。
 */

public class Testpkg {

    public static void main(String[] args) {


    // 1、同一个包下的程序,可以直接访问。
    Demo3 d = new Demo3();
    d.print();

    // 2、访问其他包下的程序,必须导包才可以访问。
    Demo d2 = new Demo();
    d2.print();

    //3、自己的程序中调用Java提供的程序,也需要先导包才可以使用;注意:Java.lang包下的程序是不需要我们导包的,可以直接使用。
    Scanner sc = new Scanner(System.in);
    String s = "黑马";
    Random r = new Random();

    //4、访问多个其他包下的程序,这些程序名又一样的情况下,默认只能导入一个程序,另一个程序必须带包名和类名来访问。
    Demo d3 = new Demo();
    d3.print();

    com.qianxin.bao.demo2.Demo d4 = new com.qianxin.bao.demo2.Demo();
    d4.print();
    }

}

1.3 JAVA的API:String

为什么要学字符串的处理呢?

  • 验证密码 百度搜索 都是用我们输入的东西去查找搜索相关内容是否存在

在这里插入图片描述
java.lang.String 代表字符串 封装字符串数据 处理字符串的方法步骤:

  • 1、创建对象
  • 2、封装字符串数据
  • 3、调string的方法

1.3.1 创建String对象

String创建对象封装字符串数据的方式

  • 方式一:Java 程序中的所有字符串文字(例如“abc”)都为此类的对象。
String name="小黑";
String schoolName="黑马程序员";
  • 方式二:调用String类的构造器初始化字符串对象

在这里插入图片描述

public class StringDemo {
    public static void main(String[] args) {

        // 目标:掌握创建String对象,并封装要处理的字符串的两种方式
        // 1、直接双引号得到字符串对象,封装字符串数据
        String name ="itheima";
        System.out.println(name);

        // 2、new String创建字符串对象,并调用构造器初始化字符串
        String rs1= new String();
        System.out.println(rs1);

        String rs2 = new String( "itheima");
        System.out.println(rs2);

        char[] chars = {'a','黑','马'};
        String rs3 = new String(chars);
        System.out.println(rs3);

        byte[] bytes ={97,98,99};
        String rs4 = new String(bytes);
        System.out.println(rs4);
    }
}

1.3.2 String提供的操作字符串数据的常用方法

只学习常用的这几个即可
在这里插入图片描述

package com.qianxin.bao.String;

public class StringDemo1 {
    public static void main(String[] args){
        // 目标:快速熟悉String提供的处理字符串的常用方法。
        String s="黑马Java";

        // 1、获取字符串的长度
        System.out.println(s.length());

        // 2、提取字符串中某个索引位置处的字符
        char c=s.charAt(1);
        System.out.println(c);

        // 3、字符串的遍历
        for(int i=0;i<s.length();i++) {
            //i=012345
            char ch = s.charAt(i);
            System.out.println(ch);
        }
        System.out.println("--------------------");

        //4、把字符申转换成字符数组,再进行遍历
        char[] chars =s.toCharArray();
        for(int i=0;i<chars.length; i++){
            System.out.println(chars[i]);
        }

        // 4、判断字符串内容,内容一样就返回true
        String s1 = new String( "黑马");
        String s2 = new String( "黑马");
        System.out.println(s1 == s2);// false
        System.out.println(s1.equals(s2));//true

        //5、忽略大小写比较字符串内容
        String c1="34AeFG";
        String c2 ="34aEfg";
        System.out.println(c1.equals(c2));//false
        System.out.println(c1.equalsIgnoreCase(c2));//true

        //6、截取字符串内容(包前不包后的)
        String s3 ="Java是最好的编程语言之一";
        String rs = s3.substring(0,8);
        System.out.println(rs);

        // 7、从当前索引位置一直截取到字符串的末尾
        String rs2 =s3.substring(5);
        System.out.println(rs2);

        //8、把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们
        String info ="这个电影简直是个垃圾,垃圾电影!!";
        String rs3=info.replace( "垃圾","**");
        System.out.println(rs3);

        //9、判断字符串中是否包含某个关键字
        String info2 ="Java是最好的编程语言之一,我爱Java,Java不爱我!";
        System.out.println(info2.contains("Java"));
        System.out.println(info2.contains("java"));
        System.out.println(info2.contains("Java2"));

        // 10、判断字符串是否以某个字符串开头。
        String rs4 ="张三丰";
        System.out.println(rs4.startsWith("张"));
        System.out.println(rs4.startsWith("张三"));
        System.out.println(rs4.startsWith("张三2"));

        // 11、把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回给我们
        String rs5 ="张无忌,周芷若,殷素素,赵敏";
        String[] names = rs5.split(",");
        for(int i=0;i<names.length;i++){
            System.out.println(names[i]);
        }
    }
}

String注意事项
在这里插入图片描述
String注意事项1:String的对象是不可变字符串对象

  • 注意:只要是以“…”双引号方式写出的字符串对象,会在堆内存中的字符串常量池中存储。

public class StringDemo2 {
    public static void main(String[] args) {
        // 目标:搞清楚String使用时的几个注意事项。
        // 1、String的对象是不可变的???
        String name ="黑马";
        name +="程序员";//name = name +“程序员”
        name +="播妞";
        System.out.println(name);
    }
}

在这里插入图片描述

结论:每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,因此说String的对象是不可变的。

String的第二点注意事项:

public class StringDemo2 {
    public static void main(String[] args) {
        // 目标:搞清楚String使用时的几个注意事项。
        // 1、String的对象是不可变的???
        String name ="黑马";
        name +="程序员";//name = name +“程序员”
        name +="播妞";
        System.out.println(name);

        //2、只要是以双引号给出的字符串对象,存储在常量池中,而且内容相同时只会存储一份
        String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2);

        // 3、new String创建字符串对象,每次new出来的都是一个新对象,放在堆内存中
        char[] chars = {'a','b','c'};
        String a1 = new String(chars);
        String a2 = new String(chars);System.out.println(a1 == a2);
    }
}
黑马程序员播妞
true
false

在这里插入图片描述
Java为什么只要是以双引号给出的字符串对象,存储在常量池中,而且内容相同时只会存储一份?

  • 节约内存

通过new构造器得到字符串对象
在这里插入图片描述
阅读程序并回答问题:
在这里插入图片描述
阅读下面的两个程序,请写出程序打印的结果是多少

  • Java存在编译优化机制,程序在编译时:会直接转成“abc”,以提高程序的执行性能

在这里插入图片描述

1.3.3 String练习案例

需求:
系统正确的登录名和密码是:itheima/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!",即可停止程席(注意:要求最多给用户三次登录机会)
在这里插入图片描述

import java.util.Scanner;

public class TestString {
    public static void main(String[] args) {
        int i = 0;
        String name ="itheima";
        String pass = "123456";
        while (i < 3){
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入账号和密码");
            String name1 = sc.next();
            String pass1 = sc.next();
            if (name1.equals(name) & pass1.equals(pass)){
                System.out.println("登陆成功!!!");
                break;

            }else {
                System.out.println("登陆失败!!!");
            }
            i++;
        }
    }
}
import java.util.Scanner;

public class TestString {
    public static void main(String[] args) {

        for (int i = 0; i < 3; i++) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请您输入登录名称:");
            String loginName = sc.next();
            System.out.println("请您输入登录密码:")
            ;
            String passWord = sc.next();
            //5、开始调用登录方法,判断是否登录成功
            boolean rs = login(loginName, passWord);
            if (rs) {
                System.out.println("恭喜您,欢迎进入系统~~");
                break;//跳出for循环,代表登录完成
            } else {
                System.out.println("登录名或者密码错误,请您确认~~");
            }

        }
    }
    public static boolean login(String loginName,String passWord){
        // 3、准备一份系统正确的登录名和密码
        String okLoginName = "itheima";
        String okPassWord="123456";
        //4、开始正式判断用户是否登录成功
        if(okLoginName.equals(loginName) && okPassWord.equals(passWord)){
            // 登录成功的
            return true;
        }else {
            return false;
        }
    }
}
1、字符串的比较使用  ==比较好吗? 为什么? 什么时候使用==?
● 不好,对于字符串对象的比较,==比较的是地址,容易出业务bug
● 基本数据类型的变量或者值应该使用==比较,
2、开发中比较字符串推荐使用什么方式比较?
使用String提供的equals方法,它只关心字符串内容一样就返回true。

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

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

相关文章

Ubuntu安装VMVare Workstation pro 17.5.1

由于需要装Kali&#xff0c;我电脑是Ubuntu单系统&#xff0c;所以只能使用linux版本的虚拟机&#xff0c;通过这种方式来安装虚拟机和Kali镜像。 参考CSDN博客资料&#xff1a;https://blog.csdn.net/xiaochong0302/article/details/127420124 github代码资料&#xff1a;vm…

2024 CKA 基础操作教程(十二)

题目内容 考点相关内容分析 Pods Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod 是 Kubernetes 中的原子单元&#xff0c;用于封装应用程序的一个或多个容器、存储资源、唯一的网络 IP&#xff0c;以及有关如何运行容器的选项。Pod 提供了一个共享的…

如何实现超大场景三维模型数据立体裁剪

如何实现超大场景三维模型数据立体裁剪 实现超大场景三维模型数据的立体裁剪可以采用如下方法&#xff1a; 数据预处理&#xff1a;将超大场景三维模型数据进行划分和分割&#xff0c;将其拆分成多个小块或网格。这样可以方便进行后续的裁剪操作。 裁剪算法选择&#xff1a;根据…

场景文本检测识别学习 day04(目标检测的基础概念)

经典的目标检测方法 one-stage 单阶段法&#xff1a;YOLO系列、SSD系列 one-stage方法&#xff1a;仅预测一次&#xff0c;直接在特征图上预测每个物体的类别和边界框输入图像之后&#xff0c;使用CNN网络提取特征图&#xff0c;不加入任何补充&#xff08;锚点、锚框&#x…

OpenHarmony轻量系统开发【2】源码下载和开发环境

2.1源码下载 关于源码下载的&#xff0c;读者可以直接查看官网&#xff1a; https://gitee.com/openharmony/docs/tree/master/zh-cn/release-notes 本文这里做下总结&#xff1a; &#xff08;1&#xff09;注册码云gitee账号。 &#xff08;2&#xff09;注册码云SSH公钥…

如何采集opc服务器数据上传云端

为了进一步提高生产效率&#xff0c;生产制造的不断朝着智能化发展和升级&#xff0c;传统的自动化生产系统已经不能满足需求。传统的SCADA系统一般是用于现场的数据采集与控制&#xff0c;但是本地控制已经无法满足整个工厂系统智能化数字化的需求&#xff0c;智能化数字化是需…

【Altium Designer 20 笔记】PCB线宽与过孔尺寸

电源线&#xff1a;40mil1A&#xff08;一般翻倍给&#xff09;,地线比电源线粗一点即可&#xff1b;信号线&#xff1a;10-15mil 一、线宽 市电的火线和零线&#xff1a;80-100mil12V /24V 20mil~60mil 5V 20-30mil 3V 20-30mil GND 越宽越好20-30mil普通信号线 10mil-15mil…

Qt 3 QVariant类的使用和实例

QVariant, 类本质为 C联合(Union)数据类型&#xff0c;它可以保存很多Qt 类型的值&#xff0c;包括 QBrush、QColor、QString 等等。也能够存放Qt的容器类型的值。QVariant::StringList 是 Qt定义的一个 QVariant::type 枚举类型的变量&#xff0c;其他常用的枚举类型变量如下表…

LabVIEW变速箱自动测试系统

LabVIEW变速箱自动测试系统 在农业生产中&#xff0c;采棉机作为重要的农用机械&#xff0c;其高效稳定的运行对提高采棉效率具有重要意义。然而&#xff0c;传统的采棉机变速箱测试方法存在测试效率低、成本高、对设备可能产生损害等问题。为了解决这些问题&#xff0c;开发了…

网站添加PWA支持,仅需三步,无视框架的类型

总结起来&#xff0c;网站配置PWA简单步骤为&#xff1a; 编写 manifest.json&#xff1b;编写 serviceWorker.js&#xff1b;在 index.html 引入上述两个文件&#xff1b;把上述三个文件放在网站根目录(或者同一目录下)&#xff1b;网站需要部署在https环境才能触发&#xff…

偏微分方程算法之二维初边值问题(交替方向隐(ADI)格式)

一、研究对象 以二维抛物型方程初边值问题为研究对象&#xff1a; 为了确保连续性&#xff0c;公式&#xff08;1&#xff09;中的相关函数满足&#xff1a; 二、理论推导 2.1 向前欧拉格式 首先进行网格剖分。将三维长方体空间&#xff08;二维位置平面一维时间轴&#xff09…

微服务之CircuitBreaker断路器

一、概述 1.1背景 在一个分布式系统中&#xff0c;每个服务都可能会调用其它的服务器&#xff0c;服务之间是相互调用相互依赖。假如微服务A调用微服务B和微服务C&#xff0c;微服务B和微服务C又调用其他的微服务。这就是构成所谓“扇出”。 如果扇出的链路上某个微服务的调…

图数据库Neo4J入门——Neo4J下载安装+Cypher基本操作+《西游记》人物关系图实例

这里写目录标题 一、效果图二、环境准备三、数据库设计3.1 人物节点设计3.2 关系设计 四、操作步骤4.1 下载、安装、启动Neo4J服务4.1.1 配置Neo4J环境变量4.1.2 启动Neo4J服务器4.1.3 启动Ne04J客户端 4.2 创建节点4.3 创建关系&#xff08;从已有节点创建关系&#xff09;4.4…

数据结构和算法(哈希表和图(A*算法精讲))

一 、哈希表 1.1 哈希表原理精讲 哈希表-散列表&#xff0c;它是基于快速存取的角度设计的&#xff0c;也是一种典型的“空间换时间”的做法 键(key)&#xff1a; 组员的编号如&#xff0c;1、5、19。。。 值(value)&#xff1a; 组员的其它信息&#xff08;包含性别、年龄和…

并查集练习

前言&#xff1a; 关于并查集的一些训练题。 正文&#xff1a; 1.亲戚&#xff1a; #include<bits/stdc.h> using namespace std; const int N5005; int fa[N]; int find(int x){if(xfa[x])return x;return fa[x]find(fa[x]); } void merge(int x,int y){fa[find(x)]fi…

MajorDoMo thumb.php 未授权RCE漏洞复现(CNVD-2024-02175)

0x01 产品简介 MajorDoMo是MajorDoMo社区的一个开源DIY智能家居自动化平台。 0x02 漏洞概述 MajorDoMo /modules/thumb/thumb.php接口处存在远程命令执行漏洞&#xff0c;未经身份验证的攻击者可利用此漏洞执行任意指令&#xff0c;获取服务器权限。 0x03 影响范围 MajorD…

消息队列和分布式消息队列

文章目录 分析系统现状不足中间件消息队列什么是消息队列&#xff1f;应用场景消息队列的模型为什么不直接传输&#xff0c;而要用消息队列&#xff1f;为什么要用消息队列&#xff1f;消息队列的缺点&#xff1f; 分布式消息队列分布式消息队列的优势&#xff1f;消息队列应用…

数字晶体管数字三极管

数字晶体管 指内部集成了电阻的三极管&#xff0c;有PNP和NPN型&#xff0c;也有双管&#xff0c;双管有3种形式&#xff0c;其中一种是PNPNPN。下面以双NPN示例&#xff0c;好处是外面没有电阻&#xff0c;批量应用时&#xff0c;焊点费用就可省下不少。双NPN的用在串口自动下…

SSH客户端工具输入目标地址端口远程失败故障原因和解决方案

问题表现&#xff1a;SSH客户端工具输入目标地址端口远程失败时&#xff0c;出现ssh client 报 algorithm negotiation failed的异常信息。 使用SSH Secure Shell Client连接Linux服务器的SSH的时候有时会出现错误提示信息&#xff1a;ssh algorithm negotiation failed。这是…

HarmonyOS NEXT星河版之实战知乎App评论功能

文章目录 一、目标完成页面二、实战2.1 定义数据2.2 mock数据2.3 封装顶部标题栏2.4 封装评论Item2.5 定义回复组件2.6 主页面 三、小结 一、目标完成页面 二、实战 2.1 定义数据 export interface ReplyItem {avatar: ResourceStr // 头像author: string // 作者id: number …