Java基础之 API 字符串

文章目录

  • API
  • 字符串
    • String
      • 概述
      • 创建对象
    • java的内存模型
    • java的常用方法(比较)
      • 练习

API

概念: APl(Application ProgrammingInterface): 应用程序编程接口
简单理解: API就是别人已经写好的东西,我们不需要自己编写,直接使用即可。
在这里插入图片描述

Java API: 指的就是JDK 中提供的各种功能的java类
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可

API帮助文档: 帮助开发人员更好的使用API和查询API的一个工具。

在这里插入图片描述

字符串

String

概述

java.lang.String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都为此类的对象。

注意点: 字符串的内容是不会发生改变的,它的对象在创建后不能被更改

总结:

1.String是Java定义好的一个类。定义在java.lang 包中
所以使用的时候不需要导包。

2.Java 程序中的所有字符串文字(例如“三连投币”)都被实为此类的对象。

3.字符串不可变,它们的值在创建后不能被更改

创建对象

  1. 直接赋值
    String name = “宫水三叶”;
  2. new + 构造方法
    在这里插入图片描述
package String;

public class StringDemo1 {
    public static void main(String[] args) {
        //直接赋值的方法获得一个字符串
        String s1 = "Hello World";
        System.out.println(s1);

        //使用new 的方式来获取字符串的对象
        //空参
        String s2 = new String();
        System.out.println("@" + s2 + "!");

        //传递一个字符串,根据传递的字符串内容再创建一个新的字符串对象
        String s3 = new String("Hello World");
        System.out.println(s3);

        //传递一个字符数组,再根据字符数组的内容创建一个字符串对象
        //需求:将ABC 改为BBC
        //ABC ---> {'A','B','C'} ---> {'B','B','C'}
        char [] chs = {'A','B','C','D','E','F','G','H'};
        String s4 = new String(chs);
        System.out.println(s4);

        //传递一个字节数组,根据字节数组的内容再创建一个字符串对象
        //应用场景:以后在网络中传输的其实是字节信息
        //我们一般要把字节信息进行转换,转换成字符串,用到这个构造
        byte [] bytes = { 97, 98, 99, 100};
        String s5 = new String(bytes);
        System.out.println(s5);
    }
}

java的内存模型

在这里插入图片描述

注意:StringTable(串池)在JDK7版本开始从方法区中挪到了堆内存

在这里插入图片描述
在这里插入图片描述
当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在,不存在:创建新的存在:复用

举例:
在这里插入图片描述
在这里插入图片描述
只要是new出来的新的变量都会在堆内存开辟一个新的位置出来

java的常用方法(比较)

==号比的到底是什么?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package String;

public class StringDemo2 {
    public static void main(String[] args) {
        //创建一个字符串对象
        String s1 = new String("abc");
        String s2 =  "Abc";

        //==号的比较
        //基本数据类型比较的是数据值
        //引用数据类型比较的是地址值
        System.out.println(s1==s2);

        //比较字符串对象中的内容是否相等
        boolean result = s1.equals(s2);
        System.out.println(result);


        //比较字符串中内容是否相等,忽略大小写
        //忽略大小写只能忽略英文的大小写
        boolean result2 = s1.equalsIgnoreCase("abc");
        System.out.println(result2);
    }
}

练习

在这里插入图片描述
代码呈现

package String;

import java.util.Scanner;

public class StringDemo4 {
    public static void main(String[] args) {
        //定义两个变量记录正确的用户名和密码
        String rightUsername = "youzi";
        String rightPassword = "123456";

        //键盘录入用户名和密码
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {

            System.out.println("请输入用户名: ");
            String username = sc.next();
            System.out.println("请输入密码");
            String password = sc.next();

            //比较
            if (username.equals(rightUsername) && password.equals(rightPassword)) {
                System.out.println("用户登录成功");
                break;
            } else {
                if (i == 2) {
                    System.out.println("您的账户已被锁定,解锁请联系工作人员");
                } else {
                    System.out.println("用户登录失败,用户名或密码错误,还剩下" + (2 - i) + "次机会");
                }
            }


        }
    }
}

运行结果
在这里插入图片描述

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

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

相关文章

Ubuntu20.04安装ffmpeg,并捕获视频流

工控机&#xff1a;幻影峡谷 系统&#xff1a;Ubuntu20.04 摄像头&#xff1a;杰瑞微通环星光USB摄像头记录一下使用ffmpeg拉取视频流的原因&#xff1a;刚开始用的是ubuntu系统自带的 茄子 软件&#xff0c;但是视频流很卡&#xff08;非常卡&#xff0c;基本上不能用&#xf…

springboot2+mybatis-plus+vue3创建入门小项目[学生管理系统]02[实战篇]

01学习篇 创建一个 vue 项目 创建这个新的文件夹 创建前端项目 eggbox 数据库 SQL CREATE DATABASE IF NOT EXISTS egg DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; USE egg;CREATE TABLE stu (id INT AUTO_INCREMENT, -- 自增主键name VARCHAR(64) NOT NULL, -- 非空…

超级初始网络

目录 一、网络发展史 1、独立模式 2、局域网 LAN&#xff08;Local Area Network&#xff09; 3、广域网 WAN (Wide Area Network) 二、网络通信基础 1、IP地址&#xff1a;用于定位主机的网络地址 2、端口号&#xff1a;用于定位主机中的进程 3、网络协议 4、五元组 …

The First项目报告:解读ZK技术的跨链巨头Polyhedra Network

4 月 17 日&#xff0c;零知识证明&#xff08;ZK&#xff09;基础设施开发团队 Polyhedra Network与谷歌云达成战略合作&#xff0c;以响应 Web2 与 Web3 市场对于该技术日益增长的需求。双方将基于Polyhedra的尖端研究及专有算法通过谷歌云提供的零知识即服务向全球开发者开放…

基于LLM的优化器评测-非凸函数

基于LLM的优化器评测-非凸函数 目标函数测试结果测试代码测试日志 背景: ​ 很多时候我们需要为系统寻找最优的超参.比如模型训练,推理的量化等.本文尝试将LLM当成优化器,帮忙我们寻找最优的超参. 验证方法: 1.设计一个已知最优解的多项式,该多项式有3个变量(因为3个变量可以…

温故而知新-Spring篇【面试复习】

温故而知新-Spring篇【面试复习】 前言版权推荐温故而知新-Spring篇IOCAOP循环依赖springboot如果要对属性文件中的账号密码加密如何实现&#xff1f;SpringBoot的优点Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1f; 最后 前言 2023-7-31 15:…

MX Component基础使用(多点位读取,多点位写入)

步骤&#xff0c;先连接PLC&#xff0c;然后在填入对应的点位 D10 然后去读取。 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;us…

微信小程序进阶(1)--自定义组件

自定义组件 1.1 什么是自定义组件 开发文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/ 小程序中常常会有些通用的交互模块&#xff0c;比如&#xff1a;下拉选择列表、搜索框、日期选择器等&#xff1b;这些界面交互模块可…

FPGA DMA技术分享(赋能高速数据处理的新动力介绍篇)

一、引言 在现代数字信号处理系统中&#xff0c;数据的高速、高效传输与处理是关键。FPGA&#xff08;现场可编程门阵列&#xff09;以其高度的灵活性和并行处理能力&#xff0c;成为实现这一目标的理想平台。而DMA&#xff08;直接内存访问&#xff09;技术&#xff0c;作为FP…

Transformers x SwanLab:可视化NLP模型训练

HuggingFace 的 Transformers 是目前最流行的深度学习训框架之一&#xff08;100k Star&#xff09;&#xff0c;现在主流的大语言模型&#xff08;LLaMa系列、Qwen系列、ChatGLM系列等&#xff09;、自然语言处理模型&#xff08;Bert系列&#xff09;等&#xff0c;都在使用T…

MM模块六(收货)

接到供应商收到的货以后&#xff0c;进行一个收货的动作 收货&#xff1a;MIGO 1.消耗物料的采购订单 数量是供应商的数量 消耗物料的采购订单&#xff0c;收进来的货物直接进入消耗&#xff0c;不会增加库存&#xff0c;所以这里没有库存地点进行选择 点击过账 收货后在采购…

mysql手动新建数据库

点击号输入数据库名&#xff0c;端口号&#xff0c;密码&#xff0c;连接到sa数据库新建数据库&#xff0c;语言必须选择utf8mb4新建数据库用户给数据库用户设置对应权限给数据库用户勾选权限

利用迭代方法求解线性方程组(Matlab)

一、问题描述 利用迭代方法求解线性方程组。 二、实验目的 掌握Jacobi 方法和Gauss-Seidel 方法的原理&#xff0c;能够编写代码实现两种迭代方法&#xff1b;能够利用代码分析线性方程组求解中的误差情况。 三、实验内容及要求 用代码实现&#xff1a;对下列方程中重新组织…

区间选点问题-贪心-C++

问题&#xff1a; 给定 &#x1d441; 个闭区间 [ai,bi]&#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 &#x1d441;&#xff0c;表示区间数…

【C++11】lambda匿名函数和包装器

目录 一&#xff0c;lambda匿名函数 1-1&#xff0c;lambda的引入 1-2&#xff0c;lambda表达式书写格式 1-3&#xff0c;lambda函数的名称 1-4&#xff0c;lambda捕获列表的使用 1-5&#xff0c;函数对象与lambda表达式 二&#xff0c;包装器 2-1&#xff0c;function…

项目管理基础知识

项目管理基础知识 导航 文章目录 项目管理基础知识导航一、项目相关概念二、时间管理三、人员管理四、风险管理 一、项目相关概念 项目定义的三层意思 一定的资源约束:时间资源、经费资源、人力资源一定的目标一次性任务 里程碑 是项目中的重要时点或事件持续时间为零&…

PX4水下机器人源码分析

一、Px4版本1.14.1机型文件 PX4Autopilotmain\ROMFS\px4fmu_common\init.d\airframes路径下 这个脚本设置了BlueROV2&#xff08;重型配置&#xff09;的各种参数和初始化步骤&#xff0c;包括电池设置、通信设置、机架和旋翼配置以及PWM输出功能的映射。通过这些设置&#x…

unity制作app(10)--统一字体

1.载入字体&#xff0c;微软雅黑&#xff0c;需要3分钟左右 加载进来3个 2.font文件夹下创建一个txt&#xff0c;内部的内容如下&#xff1a; &#xfeff;啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏…

AI视频教程下载:零基础学会DALL-E 、Midjourney、Microsoft Designer、Adobe Firefly

学完本课程会得到什么&#xff1a; 掌握ChatGPT、DALL-E 2、Midjourney、Microsoft Bing Chat、Microsoft Designer和Adobe Firefly&#xff0c;全面理解生成性AI及其应用 了解OpenAI及其在生成性AI领域的尖端研究 理解提示工程的重要性以及它如何帮助产生更好的输出和数据 …

【QGIS入门实战精品教程】5.3:CGCS2000转Lambert投影

参考阅读: 【GlobalMapper精品教程】081:WGS84/CGCS2000转Lambert投影 文章目录 一、加载实验数据二、投影转换三、批量投影转换一、加载实验数据 加载配套实验数据,如下图所示:图层为长沙市范围、长沙市酒店宾馆分布点位、湖南省酒店分布点位矢量数据。 双击图层,打开信…