数组、字符串、位运算

语言:java

数组

数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存
有索引: 0到 nums.length-1
新建:

  int arr[] = new int[10]; //需补充值
  int arr1[] = new int[]{1, 3, 5, 7, 9};
   int[] arr2 = {2, 4, 6, 8, 10};   //

遍历:

  for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
  }
  for (int num: arr) {
    System.out.println(num);
  }
  • 数组可以方便的根据索引读取数值。但是插入和删除的话,需要移动很多值。链表的插入和删除很方便,读取比较麻烦。
  • 二维数组 :int[][] res = new int[intervals.length][2]; int[][] res = {{a,b},{c,d}};
  • Arrays的copyOf()方法传回的数组是新的数组对象,改变传回数组中的元素值,不会影响原来的数组。int[] arr2 = Arrays.copyOf(arr1, 5); 第二个自变量为新的数组长度。
 Arrays.sort();  //升序排列
 //可重写为降序
Arrays.sort(T[], new Comparator<T>() {
	public int compare(T a, T b){
		return f(b) - f(a);
	}
});

字符串

字符串是不可变的
针对 Java 中出现的此问题:

  • 如果希望字符串是可变的,可以使用 toCharArray 将其转换为字符数组。
  • 如果必须连接字符串,可以使用一些其他的数据结构,如 StringBuilder,StringBuffer 。
    ref:https://leetcode-cn.com/leetbook/read/array-and-string/c9lnm/

StringBuilder sb = new StringBuilder();
sb.append(s.charAt(i));
sb.toString(); //转换成String

StringBuffer result=new StringBuffer();
result.append();
result.toString();

Java 字符串常用函数
-连接字符串  用+号即可,可用 concat()
-长度 str.length()
-判空 str.isEmpty()
-字符串比较 str.equals(str2)
-比较,忽略大小写 str.equalsIgnorecase(str2);
-自然顺序比较 str1.compareTo(str2);
    相等时返回0
    长度不等时,返回长度差值 str1-str2
    长度一样时,返回ASCII码差值
-根据索引获取字符串中字符
返回值类型    方法名   参数
char          charAt   (int index)
-根据字符获取在字符串中的位置
int           indexof  (int ch)
int           indexof  (int ch, int fromIndex) 
-拼接字符串
String        concat   (String string1)
-判断
是否包含这个字符串   contains(CharSequence s)
是否以这个前缀开头   startsWith(String prefix)
是否以这个后缀结尾   endsWith(String suffix)
-替换
        String string = "hello";        
        String string2 = string.replace("ll","pp"); // 有两个ll的话,也都会被替换掉
        System.out.println(string2);  //输出结果:heppo
-split
        String string = "a,b,c,d";
        String[] array = string.split(",");
        for(String str : array){
            System.out.print(str + " ");  //输出结果为:a  b  c  d
        }
-字串
str.substring(5); //index 保留[5,end]
str.substring(58); // [5,8)
-转换大小写
str.toUpperCase();
str.toLowerCase();
-删去头尾空格 str.trim();
-转换
字符数组转字符串 char[] array = {a,c,d,w,f}; String arr = new String(array);
字符串转字符数组 char[] charArray = str.toCharArray();
intdouble转字符串     String string = String.valueOf(num);
————————————————
版权声明:本文为CSDN博主「沙漠皇帝本拉登」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liurongsheng123/article/details/79078997

位运算

在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。
这些运算符当中,仅有取反是单目运算符,其他运算符均为双目运算符。
位运算符是对long、int、short、byte和char这5种类型的数据进行运算的,我们不能对double、float和boolean进行位运算操作。

方法是:转换为二进制数,然后逐个位比较得到结果。
1、按位与(&):全1为1,有0为0

& 1,即用于判断最后一位二进制是否为 1。来辨别奇偶。

2、按位或(|):有1为1, 全0为0
3、按位异或(^):相同为0,不同为1

任何两个相同的数字进行异或操作,所得到的结果都必然为0

4、取反(~)

5、左移(<<)

左移运算有乘以2的N次方的效果。一个数向左移动1位,就相当于乘以2的1次方。位移操作在实际运算时远远快于乘法操作。
注意:当位移的位数很多时,导致最左边的符号位发生变化,就不再具有乘以2的N次方的效果了。

在这里插入图片描述
6、带符号右移(>>)在这里插入图片描述
7、无符号右移(>>>)在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值