java基础语法之字符串

java基础--字符串用法 在使用双引号直接赋值的时候,如果字符串在串池中存在,那就复用,如果不存在就重新创建一个。以后建议使用第一种,比较节省内存,且容易创建。今天主要介绍string的创建的两种方式,了解一下java中内存模型,明天我在继续解释java字符串操作中,翻转和切片索引以及StringBuild和Stringjion的用法。通过本文的探讨,我们深入了解了Java字符串的重要性及其在编程中的广泛应用。希望这些知识能帮助您在未来的开发工作中更加得心应手。 阅读详情

目录

一.了解字符串的构造方式

二.字符串的基本操作

1.字符串的比较

2.字符串的拼接

3.获取字符串的长度

4.字符串的转换

5.字符串的查找,截取和替换

6.StringBuilder


一.了解字符串的构造方式


第一种

String str1 = "abc";

这种方法在创建字符串abc时,首先JVM会去缓冲池里寻找有没有“abc”这个字符串,如果有,就直接将缓冲池存放“abc”这块空间的地址直接赋给str1.如果没有,就会在缓冲池先开辟一个空间存放“123”,然后再将缓冲池存放“123”这块空间的地址直接赋给str1.

第二种

String str2 = new String("abc");

这种方法在创建字符串abc时,JVM也会去缓冲池里寻找有没有“abc”这个字符串,如果有,就会在堆区重新开辟一个空间,用来存放缓冲池中存放“abc”这块空间的地址。然后再让str2指向这个堆区开辟的空间的地址。
如果没有,它会先在缓冲池中开辟一个空间用来存放“abc”,然后再在堆区开辟一个空间,用来存放常量池中存放“abc”这块空间的地址。

总而言之,两种创建字符串的方式区别在于虽然内容相同,但是字符串的存放机制不同。

二.字符串的基本操作

1.字符串的比较

  • 1.==只比较内容,===不仅判断内容是否相等,还要判断存放的方式是否相等
String str1 = "abc";
String str2 = new String("abc");
str1==str2//true
str1===str2//false
  • 2.equals(),返回值为布尔值

字符串.equals(字符串2);            //需要判断字母大小写来进行比较
字符串.equalsIgnoreCase(字符串2);  //忽略字母大小写来进行比较

2.字符串的拼接

  • 最常用的使用"+"运算符拼接字符串
  • 使用 StringBuilder类,下面会单独提到

3.获取字符串的长度

  • 字符串.length()

4.字符串的转换

  • 字符数组与字符串的相互转换

字符数组转换为字符串

char []helloArray= {'h','e','l','l','o'};   //声明一个字符数组
String helloString=new String(helloArray);

字符串转换为字符数组

String helloString ="hello";        //声明一个字符串变量并赋值
char []helloArray=helloString.toCharArray();
  • int与String相互转换

int 转string

(1) num+“”;
int num=123;
String str=num+"";
(2) String.valueOf(num)
int num=123;
String str=String.valueOf(num);
(3)Integer.toString(num)
int num=123;
String str=Integer.toString(num);

string转int

(1) Integer.parseInt(str);
String str="123";
int num=Integer.parseInt(str);
(2) Integer.valueOf(str).intValue();
String str="123";
int num=Integer.valueOf(str).intValue();

5.字符串的查找,截取和替换

1.查找

  • int indexOf(char ch):搜索字符ch出现的第一个索引号,如果没有,返回-1;
  • int indexOf(char ch,int index):从index位置开始搜索出现ch的第一个索引号;没有返回-1
  • int indexOf(String str):搜索字符串str出现的第一个索引号

String str="abcd";                    
System.out.println(str.indexOf('c'));    //输出字符'c'的索引号
System.out.println(str.indexOf('c',1));  //输出索引号为1的字符是否是字符'c'
System.out.println(str.indexOf("bc"));   //输出字符串bc出现的索引
//答案为
2
-1
1  

2.截取

  • String substring(int index):提取从位置索引开始的字符串部分;
  • String substring(int beginnum,int endnum):提取beginnum到endnum-1为止的字符串部分。

String str="abcd";
str.substring(2);       //截取开始位置为3的字符串
str.substring(1, 3);    //截取开始索引为1,结束索引为3但不包含3的字符串

3.替换

字符串.replace(char oldchar,char newchar)


String s1="abcd";
char oldchar='a';         //被替换字符
char newchar='A';         //替换字符
String s2=s1.replace(oldchar, newchar);
System.out.println(s2); 
//s2结果为Abcd
 

6.StringBuilder

1.什么是StringBuilder

2.StringBuilder的构造方法

3.StringBuilder的添加与反转

4.StringBuilder与String的转化

总结:java关于字符串的方法有很多,上面只提到常用的方法。

国密证书实战:在CentOS 7上构建GmSSL私有CA与完整证书链 本文详细介绍了在CentOS 7操作系统上,使用GmSSL工具构建私有国密证书颁发机构(CA)与完整证书链的实战指南。内容涵盖从部署GmSSL、创建国密根CA、签发服务器与客户端证书,到生产环境安全加固与最佳实践的全流程,旨在帮助系统管理员和安全工程师建立统一、可控的内部国密安全通信体系。 阅读详情

相关推荐

[原创]Step by step 实现自己的AI知识库问答(二)

对小白很友好的AI智能问答开发保姆级教程,适合初级开发者、学生阅读参考,无限制分享,欢迎转载。在这个章节中,我们使用了百度千帆作为知识库,通过简单的代码调用API实现了智能问答。

BaiRiYiSanJin的博客 1470

Java常用语法——字符串

Java常用字符串语法

qq_51241339的博客 372

智能驾驶感知模块评测实战:如何用回灌测试提升BEV模型准确率(附数据集处理技巧)

本文深入探讨了如何通过诊断型回灌测试系统性地提升智能驾驶BEV感知模型的准确率与鲁棒性。文章详细拆解了从场景切片、时空对齐到多维指标分析的完整评测流水线,并针对BEV模型特有的深度估计、特征融合等环节提供了优化思路,旨在帮助工程师将海量路采数据转化为精准的模型迭代燃料。

weixin_29045585的博客 395

java学习——字符串

String类位于java. lang包中,无需引入,直接使用即可。String类是由final修饰的,表示String 类是一个最终类, 不能够被继承。String类构建的对象不可再被更改。例子//当使用一个字面量给字符串赋值时,首先会去字符串常量池中检测是否存在这个字面量。//如果存在,则直接使用这个字面量的地址赋值即可。如果不存在,则需要在字符串常量//池中创建这个字面量,然后再将地址赋值过去即可。String s="第一个字符串产生";s+="查看存储位置";

ping12138的博客 1024

最新版IAR9.40和注册工具

IAR最新版的IDE在编译速度和代码提示等各个方面上都有很大提升,软件这个东西果然还是越新越好。之前的时候,IAR v9系列网上很多人都说能用,但是又没有把 IAR v9系列的注册方法写的很清楚,导致我一直都用注册老版本v8的方法去注册v9。结果注册后都会提示。

xue_nuo的博客 4万+

Could not find a package configuration file provided by “boost_signals“

gmapping/slam_gmapping/gmapping/CMakeLists.txt:14 (find_package)问题在14行,注释该行。,该语句的用以为告诉项目Boost库文件所在。

weixin_72050316的博客 1027

【JavaSE】String的构造

这篇文章我会为大家介绍String类当中最重要的一些概念,这篇文章更注重理论层面,从String的构造方法到String常量池以及一些拓展知识帮助大家一次性理清什么是String类,String类当中的一些常用方法反倒是次要的,我们只需要了解即可不需要专门去记忆。null字符串引用没有指向任何一个内存当中的字符串,可以对比C语言当中的空指针,但是空字符串引用是的的确确指向了内存当中的一个字符串的,只不过这个字符串为空而已。

weixin_59658448的博客 1333

「UG/NX」多功能dll集成一个dll的三种方法

C++多功能集成一个dll的三种方法。

何曾参静谧的博客 1390

java基本语法(史上最全)

1.有26个英文字母大小写,0-9,_或$组成。2.不能以数字开头。3.不可以使用关键字和保留字,但能包含关键字和保留字。4.严格区分大小写。5.标识符不能包含空格。

lhyandlwl的博客 6万+

2023华为od机试C卷【最富裕的小家庭】C++ 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 1239

基于ESP32 蓝牙游戏手柄设计

介绍使用 ESP32 并通过 BLE 通信的 设计手持游戏手柄,包含原理图与代码

DT程序员的博客 2164

【Java基础语法】字符串

【代码】【Java基础语法】字符串。

houyushan1的博客 1176

第二章:创建交互式地图

那么您应该已经有了一个安装了这些包的 conda 环境。否则,您需要创建一个新的 conda 环境并使用以下命令安装。

韩天放 4215

java字符串取余换行_java基础语法

一 规则1 命名规则A:类名称首字母大写,尽可能采取驼峰式命名:MaLin HelloWorldB:命名标识符规范:数字、字母、下划线、$组成,但是不能以数字开头,不能是关键字或者保留字。例如:3max 3d gotoC:变量名称 :首字母必须小写 常量:必须全大些 PI MAXD: 方法名称:首字母必须小写2 严格区分大小写3 以分号 ‘;’ 结束二 数据类型A:基本数据类型(四类八种)1.简...

weixin_39628380的博客 354

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java基础复习(一):基础语法&数组&字符串

用于声明。

xxx_jsu的博客 1040

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java字符串基础语法

字符串的特点 字符串的内容永不可变 正是因为字符串内容不可变,所以字符串是可以共享使用的 字符串效果上是相当于char[]字符数组,但是底层原理是byte[]字节数组(字节是数据的最小单位) 创建字符串常见的4种方法 三种构造方法: public String();创建一个空白字符串 public String(char[] array);根据字符数组来创建对应的字符串 public Str...

weixin_43501384的博客 429

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java核心语法精解:从基础语法到高效字符串处理

final常量:确保不可变性,结合static创建全局常量数据类型掌握补码表示负数原理注意数值溢出问题理解强制类型转换规则运算符利用逻辑运算符的短路特性掌握位运算高效操作技巧字符串处理理解字符串常量池机制频繁字符串操作使用StringBuilder多线程环境使用StringBuffer最佳实践预估StringBuilder初始容量优先使用常量代替字面值警惕数值运算的特殊情况良好基础是高效编程的基石:系统掌握Java语法,写出更健壮的代码!

xsysy222的博客 471

Java字符串的基础语法

字符串变量 String s; String是一个类,String的变量是对象的管理者而非所有者。 创建String对象 String str = new String("a string"); 创建了一个String对象 用"a String"初始化这个对象 创建管理这个对象的变量str 让str管理这个对象 ...

ClarifiedfishLee 266

java蓝桥杯 #拌面版(part 1 *基础语法+数组与字符串)

java蓝桥杯 #拌面版(part 1 *基础语法+数组与字符串)

BanMianJiang的博客 207

java基础语法速成(八)字符串

什么是API​ API (Application Programming Interface) :应用程序编程接口java中的API​ 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。​ String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。

weixin_69912448的博客 1192

Java基础语法:数组与字符串

数组和字符串作为Java中最基础的数据结构,其重要性不言而喻。数组提供了高效的数据存储和访问方式,而字符串则是处理文本数据的核心工具。理解它们的特性和正确使用方法,对于编写高效、健壮的Java程序至关重要。数组是固定大小的同类元素集合,支持快速随机访问字符串是不可变字符序列,具有丰富的操作方法Arrays和String类提供了大量实用工具方法理解字符串的不可变性和常量池机制根据场景选择合适的字符串拼接方式掌握数组和字符串之间的转换方法了解Java新版本中的改进特性。

u012847288的博客 763

【Java语法基础】4.字符串

Java语法基础第四讲:字符串

weixin_57133810的博客 458

java字符串取余换行_Java基础语法

Java基础语法一、环境1、开发&编译——JDKJDK是java开发工具包(Java Development Kit)的缩写,是提供给Java开发人员使用。JDK中包含JRE以及开发、调试和监控应用程序的工具:编译工具(javac.exe)、打包工具()、Java监控和管理平台(jConsole、jvisualvm)等。2、集成开发环境——eclipseEclipse 是一个开放源代码的、...

weixin_39668527的博客 588

java jlabelsettext为字符串名字如何分行_Java 基础语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。类:类是一个模板,它描述一类对象的行为和状态。方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。实例变量...

weixin_39822629的博客 134

java-java的基础语法(精度与舍入,类型转换,随机数,字符串,数组,日期,方法调用)

java的基础语法(精度与舍入,类型转换,随机数,字符串,数组,日期,方法调用)

岂不闻 186

Java基础语法<二> 字符串String

笔记整理 来源于《Java核心技术卷 I 》 《Java编程思想》 1. 代码点与代码单元   Java字符串由char序列组成。大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。   length()方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量   要想的到实际的长度,即代码点数量   int cpCount = str.codeP...

YiGE_snail的专栏 140
上一篇: 配置Tomcat以及解决startup.bat一闪而过问题
下一篇: java基础语法(二)
叶枯雪落光仍在
博客等级 码龄4年 309粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶枯雪落光仍在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值