10.13Java课堂笔记
声明:
类型 [ 行 ] [ 列 ] 数组的名字
///直接为每一维分配内存空间 int [][]a = new int [2][3]; ///分别 int [][]b = new int [2][]; b[0] = new int[3]; b[1] = new int[2];
二维数组可以静态初始化,内存不是连续分配,所以每一维长度不一定相等
引用时,要给出两维的下标,比如:
b[1][1];
另外数组下标从0开始,遍历 的时候要注意不能大于等于length;
Java中含有java.util.Arrays 类,能方便进行数组操作;
fill 给数组元素负值
sort 升序排序
比较数组时可以使用equals
binarySearch 二分查找
搜索
查询元素出现的位置
需要注意的是,使用binarySearch进行查找之前,必须使用sort进行排序
如果数组中有多个相同的元素,查找结果是不确定的
clone 可以克隆数组
匿名数组
可以作为现用现写
增强for循环
可以遍历数组,也可以遍历集合
for(type name: 集合名) { }
迭代变量必须在()中进行
类似C++中的 iterator 迭代器,不会出现数组越界的问题
※ 不能再增强for循环中给数组赋值
要想初始化要用普通的for循环来解决
二维数组怎么通过增强for循环实现输出 ?
int [][] arr = {{1,2},{3,4},{5,6}}; for(int [] row : arr) { for(int j : row) { System.out.println(j); } }
使用for 循环对数组元素进行复制,要考虑到目标数组大小
System.arrary.copy 可以对数组进行拷贝
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OTKdBw6v-1609761105596)(C:\Users\wuyan\AppData\Roaming\Typora\typora-user-images\image-20201016104735416.png)]
错误的赋值方式:
int [][]num = new int[3][]; num[0][0]= 1; num[0][1]= 2; num[1][0]= 0;
字符串
双引号包裹着的一串字符:
“hello,world” "123.435"等
字符串存储在char 类型的数组中,一个字符占两个字节
String s1 = new String(); char[] a = {'b','o','y'};
常量字符串创建后会存储在字符串常量池中——享元模式
不提倡的创建字符串常量的方式
String s = new String("xyz");
字符串中常用的API
https://www.cnblogs.com/qiuqiu001/p/7806725.html
https://www.cnblogs.com/caigq/archive/2017/06/11/6985974.html
public int compareTo(String S)
当前字符串与S相同, 返回0,大于 正值,小于 负值
比较时采用Unicode来进行比较,字典序
如果不想区分大小写的时候可以使用 equalsIgnoreCase
字符串对比
问题描述
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:
1:两个字符串长度不等。比如 Beijing 和 Hebei
2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。
输入格式
包括两行,每行都是一个字符串
输出格式
仅有一个数字,表明这两个字符串的关系编号
样例输入
BEIjing beiJing
样例输出
3
Code:
package shifengshou; import java.util.Scanner; public class Main { public static void main(String[] args) { //字符串对比 Scanner in = new Scanner(System.in); String s1 = in.next(); String s2 = in.next(); if(s1.length() != s2.length()) { System.out.println("1"); } else { if(s1.equals(s2))//区分大小写的判断 System.out.println("2"); else if(s1.equalsIgnoreCase(s2))//忽略大小写的判断 System.out.println("3"); } } }
getChar() 获得字母
subString() 字符串截取(注意函数值的问题)
concat字符串拼接
isEmpty()判断是否非空""注意和 isBlank() 的区别关系
indexOf(String s);
indexOf(String s,int startpoint);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s46E1Shp-1609761105599)(C:\Users\wuyan\AppData\Roaming\Typora\typora-user-images\image-20201016113748110.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6sPwWQiU-1609761105600)(C:\Users\wuyan\AppData\Roaming\Typora\typora-user-images\image-20201016114004045.png)]