2022-7-20 学习日记(11th day)String
目录
String类
String的方法:
equals方法:
length方法:
indexOf方法:
练习:
substring方法:
转大写:toUpperCase()
转小写:toLowerCase()
判断是不是以XXX开头
判断是否以xx结尾
忽略大小写比较内容:
去掉字符串前后的空格:
根据指定的字符分割,分割之后,分割条件消失:
字符串的替换
字符串和其他数据类型的转换
字符串转数组
包装器:
封箱、拆箱:
异常:
JDK5之后的新功能:
JDK7之后的新功能:
思维导图:
String类
String 字符串
String是一个类
类中可以有哪些结构?
属性,方法,构造器
那String这个类是不是也有属性,方法,构造器?
String s1="abcdefg";
String既然是一个类,s1就应该叫做String类的对象
类如果要创建对象,一定要先new,s1并没有new,为什么s1也可以叫做对象String s2=new String("abcdefg");
s2是通过new创建出来的String类的对象;创建对象是要调用构造器
s1和s2的abcdefg不在同一个区域内。(不在同一块内存空间里)
双等号比较的是虚地址
虚地址:对象在内存中的存储位置
System.out.println(s1==s2);//falseString s3=new String("abcdefg");
虽然一个样子,但是只要是new,他就是新建一个地址,双等号还是比较地址的,所以就不相等
System.out.println(s2==s3);//falseString s4="abcdefg";System.out.println(s1==s4);//true
小结:
=赋值,无论怎么比较,都是true;
new赋值,用双等号比较,都是false;
String s1="a";String s2="a";System.out.println(s1==s2);
除了这种方式,其余所有字符串都是默认用的new的方式,也就是其他的所有比较都是false
Scanner sc=new Scanner(System.in);System.out.println("请输入字符串1");String s3=sc.next();System.out.println("请输入字符串2");String s4=sc.next();System.out.println(s3==s4);
输出结果为:false,那我想让他内容一样的就相等,不是比较地址呢?
String是类,那么这些s1,s2,s3都是对象,这些对象就都可以调用方法
String的方法:
equals方法:
功能:比较字符串
1.需要传参,传String类型的参数
2.有返回值,返回值是boolean类型
3.访问权限:public
s3.equals(s4);//返回布尔型
length方法:
1.不需要传参
2.有返回值,整型int
3.访问权想public
s3.length();
字符串获取长度的方法,和数组获取长度有什么区别?
数组的length是属性,字符串的length()是方法.
String b="abcdefg";
System.out.println(b.length());
取出指定下标位置的字符,需要传入Int类型的下标,返回一个char类型的返回值
System.out.println(c.charAt(0));
键盘输入没有char,那么我就想要char怎么做
Scanner sc1=new Scanner(System.in);
char c1=sc1.next().charAt(0);
indexOf方法:
判断指定字符是否存在
一般听到判断,我们都会想到返回值是布尔型
但是这个返回值是int型,返回值为字符串在d的下标。
如果不存在,返回-1;
indexOf(String,int)代表从int位置开始查找,包括当前位置
System.out.println(d.indexOf("a",0));
System.out.println(d.lastIndexOf("a"));
//从后往前找,但是不是按照从右到左的查,下标还是按照下标数字计算
练习:
统计一个字符串在另一个字符串中出现的次数!!
String sc="abddfsxdzzvvccxfdsfaafa";String ss="ab";int index=0;int sum=0;while (sc.indexOf(ss,index)!=-1){index=sc.indexOf(ss,index)+1;sum++;}System.out.println(index);
substring方法:
截取字符串:
String a="abcdefghijklmnopqrstuvwxyz";
String x=a.substring(1);//传一个参数,从指定位置开始截取截到字符串的末尾;
System.out.println(a);//我们截取后a会改变吗,答案是并不会。
System.out.println(x);//包括起始位置的字符,并生成一个新的字符串,不会改变原有的数据
String y=a.substring(1,2);//两个参数,从指定位置到指定位置结束,不包括末尾。(前闭后开)
System.out.println(y);
练习:
键盘输入身份证号,输出年龄,性别,生日。
eg:220 122 1990 09 09 1456,倒数第二位奇数:男,偶数:女
主方法:
public static void main(String[] args) { Scanner sc=new Scanner(System.in);System.out.println("请输入身份证号");String ss=sc.next();test03 t=new test03();System.out.println(t.Id(ss));}
调用方法:
public String Id(String ss){if(ss.length()==18) {String month = ss.substring(10, 12);String day = ss.substring(12, 14);String year = ss.substring(6, 10);int x = 2022 - Integer.parseInt(year);int sex = ss.charAt(16);String person = "性别为:女";if (sex % 2 != 0) {person = "性别为:男";}String a = "生日为:" + month + "月" + day + "日," + person + ",年龄为:" + x;return a;}return "数据错误";}
转大写:toUpperCase()
转小写:toLowerCase()
判断是不是以XXX开头
.startsWith("a")
.startsWith("a",2));//偏移两位判断是否以a为开头
判断是否以xx结尾
.endsWith("i")
忽略大小写比较内容:
String x="abcd";String y="ABCd";System.out.println(x.equalsIgnoreCase(y));//x与y对比
去掉字符串前后的空格:
String z=" asdad ";System.out.println(z.trim());
根据指定的字符分割,分割之后,分割条件消失:
String stra="123,asd,456,asd,789";String []strings=stra.split(",");System.out.println(Arrays.toString(strings));
字符串的替换
String sa="hello";System.out.println(sa.replace("e", "s"));//单个字符System.out.println(sa.replaceAll("ello", "i"));//多个字符System.out.println(sa.replaceAll("l", "i"));//l都被转换为了i
字符串和其他数据类型的转换
int i=10;
String qa=String.valueOf(i);//int转String
字符串转数组
int []arr=new int[]{1,2,3};String array="abcdefg";//转成字符型数组char[] arrays=array.toCharArray();for(char c:arrays){System.out.println(c);}//转成字节型数组//一般情况下,字节型数组在操作文件的时候,常用的IO流byte[] bytes=array.getBytes();for(byte b:bytes){System.out.println(b);}
包装器:
包装器类型(包装类,封装类)
byte-----Byte
short----Short
int--------Integer
long-----Long
float-----Float
double--Double
char-----Character
boolean-Boolean
基本数据类型可以直接赋值,但是类不是得创建对象吗,那这样写不会比较麻烦吗
自从JDK5以后就可以直接赋值了。这种赋值就叫封箱,拆箱
封箱、拆箱:
int i=10;
Integer id=30;//自动装箱
int i1=id;//自动拆箱
Integer i2=Integer.valueOf(50);//jdk5之前必须这么转
int ii2=i2.intValue();//jdk5之前必须这么转
原理:
装箱:
把int类型包装成了包装器Integer类型
基本数据类型转换成对应的包装器类型
拆箱:
int i1=i2;
把Integer类型转换成int; 包装器类型转换成对应的基本数据类型
异常:
1.数组下标越界
2.空指针
3.字符串下标越界
4.数字格式化
5.内存溢出
JDK5之后的新功能:
1.自动装箱和自动拆箱
2.增强for循环(foreach)
3.枚举
JDK7之后的新功能:
1.switch...case 可以用字符串String
思维导图:
2022-7-20 学习日记(11th day)String相关推荐
- 2022.11.20 学习周报
文章目录 摘要 论文阅读 1.题目 2.摘要 3.网络结构 3.1 网络示意图 3.2 网络特点 4.问题的提出 5.正则化带有LSTM单元的RNNs 5.1 LSTM单元 5.2 具有 Dropou ...
- 十五的学习日记20160925
十五的学习日记20160925 CSS 学过盒子布局的人都知道,元素之间的上下margin会合并,保留数值较大的margin作为渲染依据. 但是今天在群里讨论发现: img元素和p元素的上下margi ...
- 2022最新软件测试学习路线图
2022最新软件测试学习路线图! 正在学习或者考虑学习软件测试的小伙伴们有时候是不是觉得很迷茫,学习了软件测试职业到底有哪些发展方向呢?又需要学习哪些内容,掌握到什么程度呢?学习过程中,学习路线是必不 ...
- 爬虫学习日记1-豆瓣top250电影信息爬取
@ 爬虫学习日记1-豆瓣top250电影信息爬去 学习任务:结合requests.re两者的内容爬取https://movie.douban.com/top250里的内容, 要求抓取名次.影片名称.年 ...
- informatica 学习日记整理(转)
1. INFORMATICA CLIENT的使用 1.1 Repository Manager 的使用 1.1.1 创建Repository. 前提: a. 在ODBC数据源管理器中新建一个数据源连接 ...
- 正则表达式学习日记_《学习正则表达式》笔记_Mr_Ouyang
正则表达式学习日记_<学习正则表达式>笔记_Mr_Ouyang 所属分类: 正则表达式学习日记 书名: 学习正则表达式 作者: Michael Fitzgerald 译者 ...
- 黑马程序员_学习日记2_飞行棋
---------------------- Windows Phone 7手机开发. .Net培训.期待与您交流! ---------------------- 4月13日 今天看了一天的视频,把骑 ...
- 【前端学习日记】利用reveal.js把实验报告做成一个简单的幻灯片
一.整体效果 把电磁场的实验报告做成网页PPT,原文是这里:<[电磁场实验作业]有限差分法(FDM)求解静电场电位分布_轩辕衍的博客-CSDN博客> 二.核心代码讲解 0.创建页面 第一篇 ...
- SpringMVC学习日记 1.Spring框架
SpringMVC学习日记 1.Spring框架 Spring简介 Spring框架是一个开源框架,由Rod Johnson组织和开发,生产目的在于简化企业级应用的开发. 主要特性 非侵入(no-in ...
- 智能车学习日记【四】————环岛
智能车学习日记[四]----环岛 文章目录 智能车学习日记[四]----环岛 前言 一.环岛分状态(以左环岛为例) 二.每个状态思路 状态1和状态2: 状态3: 状态4: 状态5: 状态6: 状态7: ...
最新文章
- Spring Cloud 2020: Hystrix不生效怪我咯
- ASP.NET三层数据操作与GridView互动
- Python全栈之路Day13
- zend studio 9实用快捷键大全 分享ZEND STUDIO 9的常用快捷键,高亮显示相同变量。...
- git灰度发布版本_spring cloud灰度发布
- 给 c# 程序员的十个重要提示
- vs基于控制台应用程序的定时发送邮件_.NET Core 下收发邮件之 MailKit
- c语言直流电机控制实验报告,直流电机实验报告.docx
- python串口数据分包_python TCP Socket的粘包和分包的处理详解
- Vue 源码学习过程 - Observer/Dep/Watcher三者实现数据双向绑定
- DNS污染的解决方法
- 输出“A、B...Z、AA、AB...AZ、BA、BB...BZ.......”的结构
- python解密m3u8没有声音_ts文件解密+python脚本m3u8下载
- VOT数据集报错问题
- 将BMP图片转换成ICON图标
- Echarts (option.yAxis) Y轴 的属性
- Windows10各版本的区别、我们应该如何选择Windows10的系统版本?
- 【C++习题笔记】谭浩强C++程序设计(第三版)第七章
- R语言学习记录:聚类分析的R实现
- html+css实战146-banner-版权区域-布局