【JAVA】 05-String类和JDK5
链接:
笔记目录:毕向东Java基础视频教程-笔记
GitHub库:JavaBXD33
目录:
<>
- <>
内容待整理:
API-String
特点
- String类:
1、String类都是对象。
2、一旦初始化,就不可以被更改。因为是常量。
3、通过String类的构造函数可以知道,将字节数组或者字符数组转成字符串。
字符串方法查找
- 1、字符串是一个对象,那么它的方法必然是围绕操作这个对象的数据而定义的。
- 2、你认为字符串中有哪些功能呢?
- 2.1 有多少个字符
int length()
// 返回此字符串的长度。空参,用this - 2.2 字符的位置
int indexOf(int ch, int fromIndex)
// 返回指定字符在此字符串中第一次出现处的索引。
// 参数:ch - 一个字符(Unicode 代码点)。 - 2.3 获取指定位置上的字符
char charAt(int index)
// 返回指定索引处的 char 值。
// 不存在的角标会抛出异常: java.lang.StringIndexOutOfBoundsException - 2.4 获取部分字符串
String substring(int beginIndex, int endIndex)
// 返回一个新字符串,它是此字符串的一个子字符串。
// 该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。
// 因此,该子字符串的长度为 endIndex-beginIndex。
// 开始角标和结束角标时:100%是左闭右开的。
- 2.1 有多少个字符
字符串方法查找练习
- 1、字符串是否以指定字符串开头。结尾同理。
boolean startsWith(string)
boolean endsWith(string) - 2、字符串中是否包含另一个字符串。
boolean contains(string)
int indexOf(string) //如果返回-1,表示不存在 - 3、字符串中另一个字符串出现的位置。
int indexOf(string) - 4、将字符串中指定的字符串替换成另一个字符串。
String replace(oldstring, newstring) - 5、字符串如何比较大小。
int compareTo(String anotherString) - 6、将字符串转成一个字符数组。或者字节数组。
char toCharArray()
byte getBytes() - 7、将字母字符串转成大写的字母字符串。
String toUpperCase()
String toLowerCase() - 8、将字符串按照指定的方式分解成多个字符串,"lisi, wangwu, zhaoliu"获取三个姓名。
String[] split(string)
字符串练习
案例一:字符串数组排序
- 思路:
- 1、曾经:int[]排序,选择,冒泡
- 2、字符串排序同理
- 3、for嵌套循环
- 4、循环中进行元素的大小比较,满足条件就位置置换
案例二:字符串出现的次数
* "witcasteritcasttskitcasteiieocitcast"有几个itcast
- 思路:
- 1、无非就是在一个字符串中查找另一个字符串。indexOf。
- 2、查找到第一次出现的指定字符串后,如何查找第二个呢?
- 3、无需再从头开始,只要从第一次出现的位置 + 要找的字符串的长度的位置开始向后查找下一个第一次出现的位置即可
- 4、当返回的位置是-1时,查找结束。
案例三:按照长度递减获取字符串
- "itcast_sh"要求,将该字符串按照长度由长到短打印出来
- "itcast_sh"要求,将该字符串按照长度由长到短打印出来
StringBuffer:
使用:
1、是一个字符串缓冲区,其实就是一个容器。
2、长度可变,任意类型都可以。注意:是将任意数据都转成字符串进行存储。
3、容器对象提供很多对容器中数据的操作功能,比如:添加、删除、查找、修改。
4、必须所有的数据最终变成一个字符串。
和数组最大的不同:
数组:存储完可以单独操作每一个元素,每个元素都是独立的。
字符串缓冲区:所有存储的元素都被转成字符串,而且最后拼成了一个大字符串。
//1、创建一个字符串缓冲区对象,用于存储数据。
StringBuffer sb = new StringBuffer(); //2、添加数据。不断添加数据后,要对缓冲区中的最后的数据进行操作,必须转成字符串才可以。
sb.append(true).append("hehe").append(123);//方法调用链
sb.append("haha");
//String str = sb.append(true).append("hehe").append(123).toString();
//run:truehehe123haha sb.insert(2, false);//在索引位置2开始插入,包括2
//run:trfalseuehehe123haha //删除:delete和remove
//deleteCharAt(int index); //删除指定位置的元素
sb.delete(1, 4);//左闭右开
//run:tlseuehehe123haha //替换:replace
sb.replace(1, 4, "12345");//左闭右开,字符串可以比start到end长
//run:t12345uehehe123haha //反转:reverse
sb.reverse();
//run:ahah321eheheu54321t //设置为定长(裁掉多余部分)
sb.setLength(2);
//run:ah System.out.println(sb); //“+”的底层过程展示
//String s = "a"+5+'c';
//s = new StringBuffer().append("a").append(5).append('c').toString();
String典型问题
作业1:获取两个字符串的最大相同子串。
思路:
1、先明确两个字符串的长短,在长串中判断短串是否存在。
2、存在,已找到,说明短串就是最大相同;
不存在,就将短串按照长度递减的方式获取短串中的子串并到长串中判断。
3、一旦存在,便结束查找。
作业2:对字符串中字符进行自然顺序的排序
思路:
1、排序熟,但是都是对数组排序
2、数组中的元素在哪里?在字符串中。把字符串转成数组。
3、对数组排序。
4、将排序后的数组转成字符串。
作业3:String类的trim()
- 1、写代码演示该方法的使用
- 2、trim什么时候用?
用户名,文本框输入,获取用户文本时,
- 3、模拟一个和trim功能一样的函数。参阅源码。
API-基本类型包装类
概述
场景:
- 通过文本框获取用户输入的数字数据,但是得到的都是字符串。
- 如果想要对字符串中的数字进行运算,必须将字符串转成数字。
java中提供了相应的解决的对象。
- 基本数据类型对象包装类:java将基本数据类型值封装成对象。
- 封装成对象的好处:可以提供更多的操作基本数值的功能。
- 基本数据类型:8种
自动拆箱装箱
示例:
JDK1.5以后,有了一个包装类的新特性:目的是简化书写。自动装箱。
Integer i = 4;//引用数据类型指向的必然是对象。
//自动装箱。基本数值--->包装对象:三种方法。Integer i = Integer.valueOf(4);
//valueOf源码中仍是new Integer(i);
i = i + 5;//原理:等号右边将i对象转成基本数值。
//i.intValue() + 5; 自动拆箱。加法运算后,再次装箱。
//1.4里:i = Integer.valueOf(i.intValue()+5);Integer重写equals方法
综合练习-面试题
- "23 9 -4 18 100 7"
- 要求对这串数字按照从小到大排序,生成一个数值有序的字符串。
思路:
- 1、只有排序会。排序需要数组,数组中就要有元素。
- 2、元素:在字符串里,怎么取出来?要获取字符串中的内容,需要String对象
- 3、从字符串获取到数值后存储到一个int数组中。因为要排序。
- 4、将排序后的数组变成字符串。
- 即:字符串转int[] ----> int[]排序 ----> int[]转字符串
API-集合框架
集合引入
集合方法演示
迭代
迭代原理:
- 取元素,无论是什么数据结构,最终共性的取出方式:
一个一个取,取之前判断。有,取一个。没有,结束 - 这种共性的方式称为:迭代。
- 取元素,无论是什么数据结构,最终共性的取出方式:
集合使用细节
集合重复的概念引入
list
set
哈希表
二叉树结构
END
【JAVA】 05-String类和JDK5的更多相关文章
- Java中String类的方法及说明
String : 字符串类型 一. String sc_sub = new String(c,3,2); // String sb_copy = new String(sb) ...
- java.lang.String 类的所有方法
java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...
- java中String类学习
java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...
- 深入分析Java的String类的方法与特点
字符串是任何编程语言都必须支持的变量类型,有些编程语言是直接提供了原生的变量类型,有些编程语言则使用语法特性以 SDK 的形式提供支持.在Java编程平台中,对字符串的支持使用了后者的形式,就是通过在 ...
- java 中String类的常用方法总结,带你玩转String类。
String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...
- 在java中String类为什么要设计成final
在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087
- java中String类为什么不可变?
在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...
- JAVA的String类的常用方法(转载)
Java-String类的常用方法总结 一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的f ...
- 【转载】Java中String类的方法及说明
转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一. String sc_ ...
- 在java中String类为什么要设计成final?
大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...
随机推荐
- vue框架搭建--移动端
由于Vue官方提供了vue-cli手脚架,所以快速构建出个简单的项目框架.在做移动端项目时,因为移动端的特性可能会用到些比较常用的插件,就在这里简单介绍如何使用 这里只介绍怎么在项目中安装引用和简单的 ...
- 20180709-Java循环结构
while(布尔表达式){ //循环内容} public class Test{ public static void main(String args[]){ int x = 10; while(x ...
- Oracle中start with...connect by/start with…connect by prior子句的用法
connect by 是结构化查询中用到的,其基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3;例:select * ...
- vue项目中使用element的dialog中引入ztree却不能初始化解决办法
一开始我在 里边写的,发现获取不到,那么采用dialog自带的回调函数,窗口打开后opend进行处理, 结果:
- Linux shell 归纳之 cp
1. 复制文件夹folder1(包括所有子文件夹和文件), 并命名为folder2 # cp -r /usr/folder1 folder2 2. 复制文件file1 到它的上一级的目录的abc文件夹 ...
- logback-spring.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false ...
- Cisco Packet Tracer基本操作
IOS主要模式模式 描述 提示符用户执行模式 路由器受限检查,远程访问 Router>特权执行模式 路由器的详细检查:调试和测试,文件处理,远程访问 Router#全局配置模式 全局配置命令 R ...
- 初学Cadence 一
点击打开 Design Entry CIS 弹出 不要选 OrCAD Capture,这个组件和OrCAD Capture CIS 相比少了很多东西,对元件的管理不方便.选 OrCAD Capture ...
- NuGet-Doc:NuGet.Server
ylbtech-NuGet-Doc:NuGet.Server 1.返回顶部 1. NuGet.Server 2018/03/13 NuGet.Server 是由 .NET Foundation 提供的 ...
- day32—CSS多列布局学习
转行学开发,代码100天——2018-04-17 关于多列布局,前期已经梳理过,今天的培训课程学习中再次提及,趁此也做个总结和检验. 多列布局的介绍参考: day08—css布局解决方案之多列布局 ...