Java0621-node

2023-05-16

Java0621-node

目录

  • 1 JDK常用的类
    • 1.1 学习标准
    • 1.2 学习方法
    • 1.3 String
      • 1.3.1 定义
      • 1.3.2 构造方法
      • 1.3.3 方法
        • 1.3.3.1 字符串属性相关
        • 1.3.3.2 字符串比较
        • 1.3.3.3 索引
        • 1.3.3.4 拆分
        • 1.3.3.5 转换为字符串

1 JDK常用的类

1.1 学习标准

  1. 创建对象,有什么属性,有什么方法(方法名,参数,返回值)
  2. 类,方法体如何实现

1.2 学习方法

  1. Ctrl+Shift+T 搜索一个类,通过outline查看类的构成
  2. API帮助文档

1.3 String

1.3.1 定义

  • String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
  • 字符串是常量,其值在创建后不能更改,可以共享使用
    private final char value[];
  • 本质是char[]数组

1.3.2 构造方法

  1. 无参构造:空的字符串
public String() {
	this.value = "".value;
}
  1. char数组为参数的构造方法
 public String(char value[]) {
 	this.value = Arrays.copyOf(value, value.length);
 }
  1. char数组+起始+长度
/**
* @param value:char数组
* @param offset:char数组起始位置
* @param count:从char数组中取出的长度
*/
public String(char value[], int offset, int count) {
        if (offset < 0) {
            throw new StringIndexOutOfBoundsException(offset);
        }
        if (count <= 0) {
            if (count < 0) {
                throw new StringIndexOutOfBoundsException(count);
            }
            if (offset <= value.length) {
                this.value = "".value;
                return;
            }
        }
        // Note: offset or count might be near -1>>>1.
        if (offset > value.length - count) {
            throw new StringIndexOutOfBoundsException(offset + count);
        }
        this.value = Arrays.copyOfRange(value, offset, offset+count);
    }

注意:
String a = new String("abc");
肯会创建1个或两个对象:new和“abc”,常量池里若是有“abc”,则不创建

1.3.3 方法

String s = null;不能使用方法,会空指针

1.3.3.1 字符串属性相关

  1. char[] toCharArray():字符串转为字符数组
public char[] toCharArray() {
        // Cannot use Arrays.copyOf because of class initialization order issues
        char result[] = new char[value.length];

		/**
		* @param value:String的原char数组
		* @param 0:原char数组开始位置
		* @param result:目标数组
		* @param 0:目标数组开始位置
		* @param value.length:要复制的数组长度
		*/
        System.arraycopy(value, 0, result, 0, value.length);
        return result;
    }
  1. int length:字符串长度,及字符的个数,空格也算
public int length() {
	return value.length;
}
  1. boolean isEmpty:是否为空,只能判断字符串个数,不能判断是否为null
public boolean isEmpty() {
	return value.length == 0;
}

1.3.3.2 字符串比较

==:比较地址
equals:比较字面常量

String s1 = "a";
String s2 = "a";
System.out.println(s1==s2);//true
String s3 = "ab";
String s4 = "a"+"b";//两个常量连接,编译时会连接成功
System.out.println(s3==s4);//true
String s5 = s1+"b";//有变量参与,会重新开辟空间
System.out.println(s5==s3);//false
String s6 = "b";
String s7 = s1+s6;
System.out.println(s7==s3);//false
System.out.println(s7==s5);//false

String s8 = "abc";
String s9 = new String("abc");
System.out.println(s8==s9);//false
  1. boolean equals:比较两个字符串值是否相等
/**
* 
*/
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        //instanceof:左边是对象,右边是类;
        //当对象是右边类或子类所创建对象时,返回true;否则,返回false。
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                //从后往前比较
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

忽略大小写比较,全部转换成小写或者大写
2. String toLowerCase():转换成小写

public String toLowerCase() {
	return toLowerCase(Locale.getDefault());
}
  1. String toUpperCase():转换成大写
public String toUpperCase() {
	return toUpperCase(Locale.getDefault());
}
  1. boolean equalsIgnoreCase(String anotherSting):忽略大小写比较
public boolean equalsIgnoreCase(String anotherString) {
	return (this == anotherString) ? true
				: (anotherString != null)
				&& (anotherString.value.length == value.length)
			    && regionMatches(true, 0, anotherString, 0, value.length);
    }
  1. int compareTo(String anotherString):按字典顺序比较两个字符串,不考虑大小写。0:等于,正数:大于,负数:小于
public int compareTo(String anotherString) {
        int len1 = value.length;
        int len2 = anotherString.value.length;
        int lim = Math.min(len1, len2);
        char v1[] = value;
        char v2[] = anotherString.value;

        int k = 0;
        while (k < lim) {
            char c1 = v1[k];
            char c2 = v2[k];
            if (c1 != c2) {
                return c1 - c2;
            }
            k++;
        }
        return len1 - len2;
}

1.3.3.3 索引

  1. char cahrAt(int index):返回对应索引位置的字符
 public char charAt(int index) {
 	if ((index < 0) || (index >= value.length)) {
 		throw new StringIndexOutOfBoundsException(index);
 	}
 	return value[index];
 }
  1. int indexOf(int ch):从左往右找第一个出现int字符的索引位置
/**
* @param ch:一个字符或字符的ASCII码值
* @return :存在输出下标,不存在返回-1
*/
public int indexOf(int ch) {
	return indexOf(ch, 0);
}
  1. int indexOf(int ch,int fromIndex):从fromIndex开始,向右查找,第一个出现的索引位置
public int indexOf(int ch, int fromIndex) {
	final int max = value.length;
	if (fromIndex < 0) {
		fromIndex = 0;
	} else if (fromIndex >= max) {
		// Note: fromIndex might be near -1>>>1.
		return -1;
	}

	if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
		// handle most cases here (ch is a BMP code point or a
		// negative value (invalid code point))
		final char[] value = this.value;
		for (int i = fromIndex; i < max; i++) {
			if (value[i] == ch) {
				return i;
			}
		}
		return -1;
	} else {
		return indexOfSupplementary(ch, fromIndex);
	}
}
  1. int indexOf(String str):从左往右找出第一个出现str的索引位置
public int indexOf(String str) {
	return indexOf(str, 0);
}
  1. int lastIndexOf(int ch):从右往左找出第一个出现int字符的索引位置,如果找不到返回-1
public int lastIndexOf(int ch) {
	return lastIndexOf(ch, value.length - 1);
}
  1. String substring(int beginIndex):从beginIndex开始到结束,截取一个新的字符串
public String substring(int beginIndex) {
	if (beginIndex < 0) {
		throw new StringIndexOutOfBoundsException(beginIndex);
	}
	int subLen = value.length - beginIndex;
	if (subLen < 0) {
		throw new StringIndexOutOfBoundsException(subLen);
	}
	return (beginIndex == 0) ? this : new String(value, beginIndex, subLen);
}
  1. String substring(int beginIndex, int endIndex):截取[beginIndex,endIndex)之间的字符串
public String substring(int beginIndex, int endIndex) {
	if (beginIndex < 0) {
		throw new StringIndexOutOfBoundsException(beginIndex);
	}
	if (endIndex > value.length) {
		throw new StringIndexOutOfBoundsException(endIndex);
	}
	int subLen = endIndex - beginIndex;
	if (subLen < 0) {
		throw new StringIndexOutOfBoundsException(subLen);
	}
	return ((beginIndex == 0) && (endIndex == value.length)) ? this
                : new String(value, beginIndex, subLen);
}
  1. boolean startsWith(String prefix):判断字符串是否以prefix开头
public boolean startsWith(String prefix) {
	return startsWith(prefix, 0);
}
  1. boolean endsWith(String suffix):判断字符串是否以suffix结尾
public boolean endsWith(String suffix) {
	return startsWith(suffix, (value.length - suffix.value.length));
}

1.3.3.4 拆分

  1. String[] split(String regex):以regex为分隔符,进行拆分,支持正则表达式
public String[] split(String regex) {
	return split(regex, 0);
}
  1. String trim():去除一个字符串前面和后面的空格
public String trim() {
	int len = value.length;
	int st = 0;
	char[] val = value;    /* avoid getfield opcode */

	while ((st < len) && (val[st] <= ' ')) {
		st++;
	}
	while ((st < len) && (val[len - 1] <= ' ')) {
		len--;
	}
	return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
}

1.3.3.5 转换为字符串

String valueOf():将指定类型的数据转换为字符串

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java0621-node 的相关文章

  • Centos7部署Vue项目

    一 安装docker 1 安装依赖包 sudo yum install y yum utils device mapper persistent data lvm2 2 设置阿里云镜像源 sudo yum config manager ad
  • 智慧PG集成开发平台pgting-cli发布了

    介绍 两周前我们发布了智能页面搭建平台 智慧PG pgting 深受用户青睐 很多用户尝试了在线开发组件 为了方便用户定制开发组件和组件共享 智慧PG设计之初就考虑了组件定制开发问题 为此 我们设计和研发了智慧PG集成工作台pgting c
  • node koa发送邮箱验证码

    1 注册一个邮箱 开启POP3 SMTP IMAP 下方代码内的auth pass 下图授权码 2 nodejs koa发送邮箱验证码 const nodemailer require nodemailer const userEmail
  • axios 的理解和使用 axios.create(对axios请求进行二次封装) 拦截器 取消请求(axios.CancelToken)

    目录 axios是什么 axios特点 axios中文文档 axios常用语法 axios安装 axios简单使用 默认get请求 post put delete axios难点语法 axios create config 对axios请求
  • 如何在 Fedora 37/36/35 上安装 Gulp.js

    Gulp是一个工具包 可帮助开发人员在开发过程中实现痛苦工作流程的自动化 本教程将帮助您在 Fedora 操作系统上安装 Gulp js 第 1 步 安装 Node js 首先 你需要安装node js在您的系统上 使用以下命令集在 Fed
  • ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies

    ERR PNPM PEER DEP ISSUES 错误 两种解决方式 解决方式 方式一 忽略错误 项目根目录下 npmrc 中添加 strict peer dependencies false 方式二 自动安装对等依赖 项目根目录下 npm
  • 如何在 MacOS 上安装 Node.js

    Node js 是一个强大的 JavaScript 运行时环境 允许您在服务器端执行 JavaScript 它广泛用于开发可扩展的 Web 应用程序 命令行工具等 在本文中 我们将介绍在 macOS 系统上安装 Node js 的过程 先决
  • node调用谷歌翻译Api,实现自动国际化

    原因 项目国际化过程繁琐 每次都需要人工去google翻译 导致工作效率不高 需求 1 减少人工的重复劳动 提高工作效率 2 使用脚本调用谷歌翻译接口自动化翻译 3 free 作为程序员肯定接受不了付费服务 找方法解决限制 前期准备 1 谷
  • nodejs生成token

    首先安装jsonwebtoken 命令 npm i jsonwebtoken save 代码如下所示 const fs require fs 文件模块 const path require path 路径模块 const jwt requi
  • Node.js搭建WEB服务器

    Node js搭建WEB服务器 1 安装Node和nodemon插件 2 引入http模块 3 创建服务监听端口 4 解析接口地址 5 解析get参数 6 解析post参数 1 安装Node和nodemon插件 全局安装nodemon插件
  • Nginx常用命令以及升级(window)

    nginx Windows作为标准控制台应用程序 不是服务 运行 可以使用以下命令对其进行管理 start nginx 启动Nginx nginx s stop fast shutdown 快速停止 nginx s quit gracefu
  • nodejs 控制台美化 console-color-mr

    console color mr插件可以让node控制台输出带有颜色 是一个不错的插件 通过颜色可以更直观的分析程序bug 一 使用 npm install D console color mr 方法一 import console col
  • Express初学之入门

    1 Express简介 基于Node的极简MVC框架 提供灵活的路由功能 提供强大的中间件机制 内核极小 扩展性很好 使用广泛 2 路由机制 Express概念 定义了Api的地址 请求 响应方式 方法 天然支持HTTP Method 中的
  • node环境实现console输出不同颜色

    一 输出规则分析 1 输出及打印如下 console log x1B 31m s x1B 0m 这是红色 console log x1B 36m s x1B 0m 这是青色 2 规则说明 x1B 31m 是一个转义序列 它将被您的终端拦截并
  • js __proto__、prototype 、constructor 三者关系总结

    一 proto 属性 proto 怎么读 杠杠 proto 杠杠 proto 读作 dunder proto double underscore proto 的缩写 并且它前后两边 分别是 两个 下划线 由 proto 属性来连接对象 直到
  • 使用Koa2进行Web开发(二)静态文件与路由

    静态文件处理 这里选择koa static作为处理静态文件的中间件 const Koa require koa const app new Koa const serve require koa static app use serve d
  • node socket 简易聊天室

    服务端 const net require net const server net createServer 用户列表 let clients 监听连接 server on connection client gt client on d
  • 如何在 Windows 10 上安装 Node.js

    Node js 是一个开源的 JavaScript 运行时环境 它允许在 Web 浏览器之外运行 JavaScript 本教程将帮助您在 Windows 系统上安装 Node js 在 Windows 上安装节点 以下是在 Windows
  • Node之使用dns模块解析域名

    引 在网络编程中 开发者更倾向于使用域名 而不是IP地址来指定网络连接的目标地址 在Node js中 提供dns模块 以实现域名查找及域名解析的处理 在dns模块中 提供了三个主方法及一系列便捷方法 其中三个主方法分别为用于将一个域名解析为
  • 大数据毕业设计之前端02:架构布局和aside的设计

    前言 上一篇主要讲了我学习前端的一个经历 以及为什么选择BuildAdmin作为深入前端学习的原因 同事也大致聊了一下学习前端需要使用哪些技术栈 本篇文章来拆解一下BuildAdmin的前端代码结构 和布局实现的细节 前端代码结构 必须先了

随机推荐

  • 工作生活篇之第六天

    工作生活篇之第六天 最近由于疫情的影响 xff0c 国家电网也发布了最新消息 xff0c 电费在欠额的情况可继续使用 本来我是以为只有电费欠费可以继续使用 xff0c 没想到燃气费也是 xff0c 最近燃气费不多了 xff0c 然后还得去银
  • 工作生活篇之第九篇

    工作生活篇之第九篇 一直觉得这世上告别仪式挺多的 xff0c 比如喝酒 旅行 xff0c 或干脆痛哭一场 xff0c 可是后来才知道 xff0c 人生中大部分告别是悄无声息的 xff0c 原来某天的相见 xff0c 竟已是最后一面 xff0
  • Java自定义输出JSON格式

    如何自定义输出数据Json格式解决办法 平时默认的json输出格式为 xff1a span class token punctuation span span class token string 34 id 34 span span cl
  • SpringCloud常见问题 -- 启动多个服务

  • Spring框架 -- 项目启动及配置(一)

    Spring 容器启动大致流程 Spring 基础 IDEA项目Maven搭建结构 idea src src main java 自建 src main resource 自建 src main resource dev 自建 src ma
  • 【ZYNQ】裸机 PS + PL 双网口实现之 lwip 库文件修改

    因项目需要 xff0c 为实现 Zynq 裸机双网口通信功能 xff0c 其中 ENET0 连接 PS 端网口 xff0c ENET1 通过 EMIO 扩展连接 PL 端网口 xff0c 原 Lwip 库无板载 PHY 芯片支持及 EMIO
  • openstack删除nova service-list中的computer服务列表流程

    文章目录 说明 删除流程 nova服务查看 修改主机名 关闭准备删除的nova服务 删除nova服务 删除agent服务 创建虚拟机测试 说明 如下图 同一个计算节点主机名有2个 造成这种原因就是单纯的改主机名了 因为正常来说计算节点nov
  • spring— Bean标签scope配置和生命周期配置

    scope配置 singleton 默认值 xff0c 单例的prototype 多例的request WEB 项目中 xff0c Spring 创建一个 Bean的对象 xff0c 将对象存入到 request 域中session WEB
  • 对项目的梳理、流程和总结

    过程 我在制作 中国汽车技术研究中心 的一个演讲PPT前 xff0c 也已经有第一版的基础了 xff0c 不过 xff0c 第一版的PPT客户并不满意 xff0c 因为这个风格不是客户想要的 xff0c 所以客户对第一版的PPT并不是很满意
  • Linux中添加用户设置权限并实现远程登录

    1 username 为你自己命名的用户名 useradd username 2 设置密码 passwd username 3 用户文件夹在 home 下 4 查看更改登录管理账号 sudo vi etc ssh sshd config 5
  • rosdep init报错解决方法

    rosdep init报错解决方法 很多小伙伴在安装ROS的过程中都不可避免的要执行rosdep init和rosdep update这两行命令行 xff0c 这也是在安装ROS的过程中最让人头疼的两步 xff0c 一般都没法一次成功 xf
  • win10登录出现“其他用户”,一分钟后自动重启的解决方案和原因分析

    今天公司的同事的电脑莫名其妙重启开机后 xff0c 就一直是其他用户 身为技术部的人 xff0c 程序员就该修电脑是常识 xff08 大雾 xff09 百度各种解决方案的汇总 输入你的微软账号用户名 xff08 邮箱 xff09 和微软账号
  • Nginx启动失败control process exited, code=exited status=1

    出现现象 nginx启动失败 xff0c 估计是端口被某个进程占用了 通过lsof i 80 查看 xff0c 发现被httpd服务占用 可以通过杀掉进程或者更改nginx 端口解决 xff0c 通cat etc nginx nginx c
  • Python爬虫入门实例一之淘宝商品页面的爬取

    文章目录 1 爬取原界面2 代码解析3 完整代码引用源自 1 爬取原界面 今天给大家介绍第一个爬虫小例子 xff0c 使用requests库爬取淘宝商品信息 xff0c 首先想要爬取的内容如下图 2 代码解析 使用交互环境给大家带来代码解析
  • Linux(Ubuntu)入门——1.Ubuntu虚拟机安装

    inux Ubuntu 入门 1 Ubuntu虚拟机安装 目录 Ubuntu虚拟机安装 Ubuntu虚拟机安装 1 在VMware界面选择创建新的虚拟机 2 选择自定义 xff08 高级 xff09 xff0c 然后点击下一步 3 硬件兼容
  • Linux(Ubuntu)入门——4.VMwaretools安装(解决虚拟机窗口过小)

    Linux Ubuntu 入门 4 VMwaretools安装 xff08 解决虚拟机窗口过小 xff09 1 虚拟机选项卡里选择安装VMwareTools 2 桌面会看到VMware Tools的图标 xff0c 双击打开 3 将以 ta
  • Java0608-node

    Java0608 node 目录 Java0608 node1 数组1 1概念1 2 数组的使用1 3使用场景1 4应用 2 二维数组2 1二维数组的创建 1 数组 1 1概念 数组是指内存中一块连续的空间 xff0c 数量固定且存储类型相
  • Linux修改密码报错Authentication token manipulation error的终极解决方法

    文章目录 报错说明解决思路流程排查特殊权限有没有上锁查看根目录和关闭selinux etc pam d passwd文件 etc pam d system auth文件终极办法 xff0c 手动定义密码passwd Have exhaust
  • java0614-homework

    java0614 homework 目录 java0614 homework1 定义狗类2 求矩形面积3 实现级联菜单4 模拟计算器5 用户登录 1 定义狗类 题目 定义狗类 属性 xff1a 昵称 xff0c 品种 xff0c 健康值 x
  • Java0621-node

    Java0621 node 目录 1 JDK常用的类1 1 学习标准1 2 学习方法1 3 String1 3 1 定义1 3 2 构造方法1 3 3 方法1 3 3 1 字符串属性相关1 3 3 2 字符串比较1 3 3 3 索引1 3