Java零基础入门到精通_Day 8

1.API

应用程序接口

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

2. String 

String 类在java.lang 包下,所以使用的时候不需要导包
String 类代表字符串,Java程序中的所有字符串文字(例如“abc”)都被实现为此类的实也就是说,Java 程序中所有的双引号字符串,都是String 类的对象
字符串的特点


字符串不可变,它们的值在创建后不能被更改
虽然 String的值是不可变的,但是它们可以被共享

字符串效果上相当于字符数组( char[]),但是底层原理是字节数组( byte[])

3.String 构造方法

package Base_one.Base_008;public class StringDemo1 {public static void main(String[] args) {String s1 = new String();System.out.println(s1); // 空的// public String(char[] chs) 根据字符数组的内容 创建字符串对象char[] chs ={'a','b','c'};String s2 = new String(chs); //String方法传进去一个字符数组System.out.println(s2);//public string(byte[] bys):根据字节数组的内容,来创建字符串对象byte[] bys = {97,2,3};byte[] bys1 = {97,98,99};String s3 = new String(bys);System.out.println(s3); // aString s4 = new String(bys1);System.out.println(s4); // abcString s5 = "abc";System.out.println(s5);}
}

4. String 对象的特点

通过 new 创建的字符串对象,每一次 new都会申请一个内存空间,虽然内容相同,但是地址值不同

char[]chs ={'a','b''c'}i
string sl=new string(chs);
string s2=new string(chs);

上面的代码中,JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容是相同的

2)以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个String 对象,并在字符串池中维护

String s3="abc";
String s4="abc";

在上面的代码中,针对第一行代码,JVM 会建立一个String对象放在字符串池中,并给s3 参考;第二行则让s4 直接参考字符串池中的Strinq对象,也就是说它们本质上是同一个对象。

package Base_one.Base_008;public class String_object {public static void main(String[] args) {// 构造方法的方式创建对象char[] chs = {'a','b','c'};String s1 = new String(chs);String s2 = new String(chs);System.out.println(s1==s2); //false// 直接赋值的方式得到对象String s3 = "abc";String s4 = "abc";System.out.println(s3==s4); //true// 比较字符串的地址是否相同System.out.println(s1==s3); //false}
}

5.字符串的比较

package Base_one.Base_008;public class StringDemo02 {public static void main(String[] args) {char[] chs = {'a','b','c'};String s1 = new String(chs);String s2 = new String(chs);String s3 = "abc";String s4 = "abc";// 比较字符串对象的地址值是否相同System.out.println(s1==s2); //falseSystem.out.println(s1==s3); //flaseSystem.out.println(s3==s4); //trueSystem.out.println("----");//比较字符串内容是否相同System.out.println(s1.equals(s2)); //trueSystem.out.println(s1.equals(s3)); //trueSystem.out.println(s3.equals(s4)); //true}
}

6. 用户登录

package Base_one.Base_008;import java.util.Scanner;
import java.util.stream.Stream;public class StringTest01 {public static void main(String[] args) {String user = "user";String pwd = "a123456";Scanner scanner = new Scanner(System.in);System.out.println("请输入用户名:");String username = scanner.nextLine();System.out.println("请输入密码:");String password = scanner.nextLine();StringTest01 test01 = new StringTest01();int cout=0;for(int i=0;i<3;i++){if(username.equals(user) && (password.equals(pwd))){System.out.println("正确");break;}else {System.out.println("第"+(i+1)+"次输入不对,重新输入");System.out.println("还有"+(2-i)+"次机会");if ((2-i)==0){System.out.println("三次机会使用完毕!");break;}else {
//                username = usr.nextLine();
//                password = pw.nextLine();username = test01.userInput(username);password = test01.pwdInput(password);}}}}public String userInput(String username){Scanner usr = new Scanner(System.in);String u = usr.nextLine();return u;}public String pwdInput(String password){Scanner pw = new Scanner(System.in);String p = pw.nextLine();return p;}
}

7.遍历字符串

package Base_one.Base_008;import java.util.Scanner;public class StringYest02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串");String line = sc.nextLine();for (int i = 0;i<line.length();i++){System.out.print(line.charAt(i)+" ");}}
}

8. 统计字符次数

package Base_one.Base_008;import java.util.Scanner;public class StringTest03 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入一个字符串");String line = sc.nextLine();int D = 0;int X = 0;int number = 0;for (int i= 0;i<line.length();i++){char ch = line.charAt(i);if (ch>='A' && ch<='Z'){D++;} else if (ch>='a' && ch<='z') {X++;} else if (ch>='0' && ch<='9') {number++;}else { // 其他字符的情况continue;}}System.out.println(D);System.out.println(X);System.out.println(number);}
}

8. 拼接字符串

package Base_one.Base_008;public class StringTest005 {public static void main(String[] args) {int[] arr = {1, 2, 3};System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {System.out.print(arr[i]);  // 注意这里使用空格而不是加号} else {System.out.print(arr[i] + ",");  // 注意这里使用空格而不是加号}}System.out.print("]");System.out.println();System.out.println("-------");String line = araytoString(arr);System.out.println(line);}public static String araytoString(int[] arr) {String s = "";s += "[";for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {s += arr[i];} else {s += arr[i];s += ",";}}s += "]";return s;}
}

9.字符串反转

package Base_one.Base_008;import java.util.Scanner;public class StringDemo06 {public static void main(String[] args) {
//        String s = "abc";Scanner sc = new Scanner(System.in);System.out.println("输入一个字符串");String s = sc.nextLine();System.out.println(s);System.out.println("---");String ss = reverseString(s);System.out.println(ss);}public static String reverseString(String l) {String line = "";for (int i = l.length()-1; i>=0 ; i--){line += l.charAt(i);}return line;}}

10.String中的方法

11. StringBuilder

StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器。这里的可变指的是StringBuilder对象中的内容是可变的。

String 和 StringBuilder 的区别:
String:内容是不可变的
StringBuilder:内容是可变的

12.StringBuilder 构造方法

package Base_one.Base_008;public class StringBuilderDemo {public static void main(String[] args) {// 创建一个空的可变字符串对象,不含有任何内容。StringBuilder sb = new StringBuilder();System.out.println(sb); //System.out.println(sb.length()); // 0StringBuilder sb2 = new StringBuilder("hello");System.out.println(sb2); //helloSystem.out.println(sb2.length()); //5}
}

13 StringBuilder 的添加和反转方法

package Base_one.Base_008;public class StringBuilderDemo1 {public static void main(String[] args) {StringBuilder sb = new StringBuilder();//public stringBuilder append(任意类型):添加数据,并返回对象本身//public stringBuilder reverse():返回相反的字符序列
//        StringBuilder sb2 = sb.append("hello"); // 返回对象本身
//        System.out.println(sb);
//        System.out.println(sb2);
//        System.out.println(sb==sb2); //
//        sb.append("hello");
//        sb.append(123);
//        System.out.println(sb);// 链式法则sb.append("hello").append(134); // 可以一直调用方法System.out.println(sb); //hello134sb.reverse();System.out.println(sb); //hello134}
}

13 String 和 StringBuilder 相互转换

package Base_one.Base_008;public class Reverse {public static void main(String[] args) {
//        StringBuilder sb = new StringBuilder();
//        sb.append("hello");String s = sb;// 类型不一样
//        String s = sb.toString(); // 利用toString()方法
//        System.out.println(s);// 转换为StringBUilderString s = "hello";StringBuilder sb = new StringBuilder(s);System.out.println(sb);}
}

14 拼接字符串

package Base_one.Base_008;public class Test {public static void main(String[] args) {int[] arr = {1,2,3};String s = arrtoString(arr);System.out.println(s);}public static String arrtoString(int[] arr){StringBuilder sb = new StringBuilder();sb.append("[");for (int i=0;i< arr.length;i++){if (i== arr.length-1){sb.append(arr[i]);sb.append("]");}else{sb.append(arr[i]).append(",");}}String s = sb.toString();return s;}
}

15.字符串反转升级版

package Base_one.Base_008;import java.util.Scanner;public class Test02 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("输入一个字符串");String s = scanner.nextLine();System.out.println(s);String ss = reverseString(s);System.out.println(ss);}public static String reverseString(String s){// 将接收到的字符串转为StringBuilder类型
//        StringBuilder sb = new StringBuilder(s);
//        sb.reverse();
//        // 再转化为String
//        String ss = sb.toString();
//        return ss;// 将上面的四步一步完成String ss = new StringBuilder(s).reverse().toString();return ss;}
}

16 总结

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【副本向】Lua副本逻辑

副本生命周期 OnCopySceneTick() 子线程每次心跳调用 --副本心跳 function x3323_OnCopySceneTick(elapse)if x3323_g_IsPlayerEnter 0 thenreturn; -- 如果没人进入&#xff0c;则函数直接返回endif x3323_g_GameOver 1 thenif x3323_g_EndTick > 0 thenx3323_CountDown…

循环神经网络完整实现(Pytorch 13)

一 循环神经网络的从零开始实现 从头开始基于循环神经网络实现字符级语言模型。 %matplotlib inline import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2lbatch_size, num_steps 32, 35 train_iter, vocab …

分布式websocket IM即时通讯聊天开源项目如何启动

前言 自己之前分享了分布式websocket的视频有同学去fork项目了&#xff0c;自己启动一下更方便理解项目嘛。然后把项目启动需要的东西全部梳理出来。支持群聊单聊,表情包以及发送图片。 支持消息可靠&#xff0c;消息防重&#xff0c;消息有序。同时基础架构有分布式权限&…

OneFlow深度学习框原理、用法、案例和注意事项

本文将基于OneFlow深度学习框架&#xff0c;详细介绍其原理、用法、案例和注意事项。OneFlow是由中科院计算所自动化研究所推出的深度学习框架&#xff0c;专注于高效、易用和扩展性强。它提供了一种类似于深度学习库的接口&#xff0c;可以用于构建神经网络模型&#xff0c;并…

Android4.4真机移植过程笔记(三)

如果文章字体看得不是很清楚&#xff0c;大家可以下载pdf文档查看&#xff0c;文档已上传&#xff5e;oo&#xff5e; 7、安装加密APK 需要修改文件如下&#xff1a; 相对Android4.2改动还是蛮大的&#xff0c;有些文件连路径都变了: //Android4.2 1、frameworks/native/libs…

STL速查

容器 (Containers) 图解容器 支持随机访问 stringarrayvectordeque支持支持支持支持 string 类 构造函数 string(); ------创建一个空的字符串 例如: string str;string(const char* s); ------使用字符串s初始化string(const string& str); ------拷贝构造 赋值操作…

C++学习--点滴记录011

11函数提高 11.1 函数默认参数 在C中&#xff0c;函数的形参列表中的形参可以有默认值 语法&#xff1a; 返回值类型 函数名 &#xff08;参数 默认值&#xff09;{} 示例&#xff1a; #include <iostream> using namespace std;int func(int a, int b 10, int c …

网络基础-网络设备介绍

本系列文章主要介绍思科、华为、华三三大厂商的网络设备 网络设备 网络设备是指用于构建和管理计算机网络的各种硬件设备和设备组件。以下是常见的网络设备类型&#xff1a; 路由器&#xff08;Router&#xff09;&#xff1a;用于连接不同网络并在它们之间转发数据包的设备…

wpf线程中更新UI的4种方式

在wpf中&#xff0c;更新UI上面的数据&#xff0c;那是必经之路&#xff0c;搞不好&#xff0c;就是死锁&#xff0c;或者没反应&#xff0c;很多时候&#xff0c;都是嵌套的非常深导致的。但是更新UI的方式&#xff0c;有很多的种&#xff0c;不同的方式&#xff0c;表示的意思…

国内各种免费AI聊天机器人(ChatGPT)推荐(中)

作者主页&#xff1a;点击&#xff01; 国内免费AI推荐(ChatGPT)专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月29日15点20分 随着人工智能技术的不断发展&#xff0c;AI聊天机器人已经逐渐融入我们的日常生活。它们可以提供各种服务&#xff0c;例如聊天、…

Golang | Leetcode Golang题解之第68题文本左右对齐

题目&#xff1a; 题解&#xff1a; // blank 返回长度为 n 的由空格组成的字符串 func blank(n int) string {return strings.Repeat(" ", n) }func fullJustify(words []string, maxWidth int) (ans []string) {right, n : 0, len(words)for {left : right // 当前…

leetCode72. 编辑距离

leetCode72. 编辑距离 基本思路&#xff1a; 代码 class Solution { public:int minDistance(string a, string b) {// a,b的0不做表示&#xff0c;所以从1开始&#xff0c;dp状态表示&#xff0c;这种办法会很方便a a, b b;int n a.size();int m b.size(); // 定…

Elasticsearch 数据聚合

Bucket聚合&#xff08;桶聚合&#xff09; 对文档做分组&#xff0c;aggs 按照文档字段值或日期进行分组&#xff0c;能参与分词的字段不能做聚合&#xff0c;如text类型的字段 例如&#xff1a;根据城市名称做聚合&#xff0c;也就是城市名称对数据进行分组统计。可以加qu…

Sarcasm detection论文解析 |使用基于多头注意力的双向 LSTM 进行讽刺检测

论文地址 论文地址&#xff1a;https://ieeexplore.ieee.org/document/8949523 论文首页 笔记框架 使用基于多头注意力的双向 LSTM 进行讽刺检测 &#x1f4c5;出版年份:2020 &#x1f4d6;出版期刊:IEEE Access &#x1f4c8;影响因子:3.9 &#x1f9d1;文章作者:Kumar Avinas…

Educational Codeforces Round 165 (Rated for Div. 2) (C、D)

1969C - Minimizing the Sum 题意&#xff1a; 思路&#xff1a;观察到操作数很小&#xff0c;最值问题操作数很容易想到dp&#xff0c;用表示第个元素&#xff0c;操作了次的最小值总和&#xff0c;转移的时候枚举连续操作了几次即可&#xff0c;而连续操作了几次即将全部变成…

Llama改进之——SwiGLU激活函数

引言 今天介绍LLAMA模型引入的关于激活函数的改进——SwiGLU1&#xff0c;该激活函数取得了不错的效果&#xff0c;得到了广泛地应用。 SwiGLU是GLU的一种变体&#xff0c;其中包含了GLU和Swish激活函数。 GLU GLU(Gated Linear Units,门控线性单元)2引入了两个不同的线性层…

UE5 蓝图入门

基础节点创建&#xff1a; 常量&#xff1a; 按住 1 &#xff0c;点击鼠标左键&#xff0c;创建常量 二维向量&#xff1a; 按住 2 &#xff0c;点击鼠标左键&#xff0c;创建二维向量 三维向量&#xff1a; 按住 3 &#xff0c;点击鼠标左键 乘法&#xff1a; 按住 m 键…

基于node.js+css+html+mysql博客系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、Php、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

Mysql技能树学习

查询进阶 别名 MySQL支持在查询数据时为字段名或表名指定别名&#xff0c;指定别名时可以使用AS关键字。 BETWEEN AND条件语句 mysql> SELECT * FROM t_goods WHERE id BETWEEN 6 AND 8; 查询特定数据 &#xff08;CASE&#xff09; select name,case when price <…

华为机考入门python3--(22)牛客22- 汽水瓶

分类&#xff1a;数字 知识点&#xff1a; 整除符号// 5//3 1 取余符号% 5%3 2 题目来自【牛客】 import sysdef calc_soda_bottles(n):if n 0: # 结束输入&#xff0c;不进行处理returnelse:# 循环进行汽水换算total_drunk 0 # 记录总共喝了多少瓶汽水while…