栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java day13,day14,day15

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java day13,day14,day15

System.arraycopy就是把一个数组中某一段字节数据放到另一个数组中。至于从第一个数组中取出几个数据,放到第二个数组中的什么位置都是可以通知这个方法的参数控制的。

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

src:源数组;

srcPos:源数组要复制的起始位置;

dest:目的数组;

destPos:目的数组放置的起始位置;

length:复制的长度.

注意:src 和 dest都必须是同类型或者可以进行转换类型的数组

package com.atguigu;

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        String[] a = {"hello","java","world","atguigu","chai"};
        int total =a.length;  //5
        //删除[2]位置元素
        int index = 2;
        System.arraycopy(a, index+1,a, index, total-index-1);;
        a[--total] = null;
        System.out.println(Arrays.toString(a));
    }
}

[hello, java, atguigu, chai, null]

Period:用于计算两个“日期”间隔

Duration:用于计算两个“时间”间隔

  public void test01(){
        LocalDate t1 = LocalDate.now();
        LocalDate t2 = LocalDate.of(2018, 12, 31);
        Period between = Period.between(t1, t2);
        System.out.println(between);

        System.out.println("相差的年数:"+between.getYears());
        System.out.println("相差的月数:"+between.getMonths());
        System.out.println("相差的天数:"+between.getDays());
        System.out.println("相差的总数:"+between.toTotalMonths());
    }

    @Test
    public void test02(){
        LocalDateTime t1 = LocalDateTime.now();
        LocalDateTime t2 = LocalDateTime.of(2017, 8, 29, 0, 0, 0, 0);
        Duration between = Duration.between(t1, t2);
        System.out.println(between);

        System.out.println("相差的总天数:"+between.toDays());
        System.out.println("相差的总小时数:"+between.toHours());
        System.out.println("相差的总分钟数:"+between.toMinutes());
        System.out.println("相差的总秒数:"+between.getSeconds());
        System.out.println("相差的总毫秒数:"+between.toMillis());
        System.out.println("相差的总纳秒数:"+between.toNanos());
        System.out.println("不够一秒的纳秒数:"+between.getNano());
    }
}
 // Random类  //用于产生随机数
        Random random = new Random();

        for (int i = 0; i < 10; i++) {
            int num = random.nextInt(16);
            System.out.println(num);
        }

        Random a = new Random();
        int aa = a.nextInt(10);
        System.out.println(aa);


* int index = Arrays.binarySearch(nums,19);// 二分查找,要先排序,才能二分查找. * System.out.println(Arrays.equals(nums, numsOne));// 两个数组的长度和元素完全相同返回true,否则返回false

String的一些方法:

1.sbustring: 截取字符串

String str = "helloworldjavaatguigu"; 
String sub1 = str.substring(5);  //substring(5)从5开始截,默认截取到最后一位。
String sub2 = str.substring(5,10); //从下标5开始截,到下标10停止,注意截取不到10,是10的前一位
System.out.println(sub1);   //worldjavaatguigu
System.out.println(sub2);        //world

2.   toUpperCase:小写转大写 ;toLowerCase : 大写转小写 ;  charAt(index):取出下标为index位置的字符 ;

String str1 = "jack";
str1 = Character.toUpperCase(str1.charAt(0))+str1.substring(1);
System.out.println(str1);

3.  indexOf()在原串中搜索参数字符串(或者字符)一次出现的下标

int index2 = word.indexOf("l");在原串中搜索参数字符第串一次出现的下标
System.out.println(index2);

4. length 返回字符串包含中间及两端空格的字符数
System.out.println(word.length());// 返回字符串包含中间及两端空格的字符数

5.cancat   拼接字符串 

word = word.concat(" one two three");// 拼接字符串

6.charAt(x)  返回下标x处的字符

System.out.println(word.charAt(0));// 返回参数索引位置的字符

7.toUpperCase  字符串全转大写,toLowerCase  字符串全转小写。

System.out.println(word.toUpperCase());// 将字符串全转大写
System.out.println(word.toLowerCase());// 将字符串全转小写

8.toCharArray()    将字符串转成字符数组

char[] chars = word.toCharArray();// 将字符串转成字符数组

9.trim()  去掉两端的空格

System.out.println(word.trim());// 去掉两端的空格

10.split(x)使用参数x作为分割点,将原字符串分割成字符串数组

String[] words = word.split("-");// 使用参数作为分割点,将原字符串分割成字符串数组
StringBuilder、StringBuffer的API

因为String对象是不可变对象,虽然可以共享常量对象,但是对于频繁字符串的修改和拼接操作,效率极低。因此,JDK又在java.lang包提供了可变字符序列StringBuilder和StringBuffer类型

1.StringBuffer reverse(xy):反转,把xy反转成yx。

  

2.StringBuffer append(xx):拼接,追加 ,在原字符串后面添加字符;

  

3. StringBuffer replace(int start, int end, String str):替换[start,end)范围的字符序列为str

  

4.String substring(int start, int end):截取当前字符序列[start,end)  

 5.StringBuffer delete(int start, int end):删除[start,end)之间字符         

   StringBuffer deleteCharAt(int index):删除[index]位置字符

 

6.StringBuffer insert(int index, xx):在[index]位置插入xx  

 

7.String substring(int start):截取当前字符序列[start,最后]

String substring(int start, int end):截取当前字符序列[start,end)

8.String toString():返回此序列中数据的字符串表示形式

 

 

StringBuffer和Stringbuilder的区别

1.StringBuffer多线程安全,但是加了synchronized,其效率低。故适用于多线程下,并发量不是很高的场景

2、StringBuilder没有加任何锁,其效率高,适用单线程场景,但同时也适用于高并发场景中,提高高并发场景下程序的响应性能,至于线程安全问题可以通过其它手段解决,如ThreadLocal,CAS操作等。

3、所以对于高并发场景下,若有用到二者,还是建议优先使用StringBuilder

String对象的两种创建方式

//方式一:通过字符串常量的方式
String str1 = "joshua317";    首先检索方法区字符串常量池有没有joshua317,没有则创建一个,如果有就把地址赋值给str1
//方式二:通过new一个对象方式创建
String str2 = new String("joshua317");
 
//false
System.out.println(str1==str2);

数组基本算法

package com.atguigu.test;

import java.util.Arrays;

public class TestTwo {
    public static void main(String[] args) {
        // 向指定索引位置新增元素
        int[] nums = {74,38,96,42,37};

        int emptyIndex = -1;

        for (int i = 0; i < nums.length; i++) {
            if(nums[i] == 0){
                emptyIndex = i;
                break;
            }
        }

        if(emptyIndex == -1){
            System.out.println(Arrays.toString(nums));
            // 扩容
            nums = Arrays.copyOf(nums,nums.length*2);
            for (int i = 0; i < nums.length; i++) {
                if(nums[i] == 0){
                    emptyIndex = i;
                    break;
                }
            }
            System.out.println(Arrays.toString(nums));
        }
        int index = 1;// 新增元素下标
        if(index < emptyIndex){
            // 插队式新增
            for (int i = emptyIndex; i > index ; i--) {
                nums[i] = nums[i-1];
            }
            nums[index] = 101;
        }else if(index == emptyIndex){
            // 追加式新增
            nums[index] = 101;
        }else{
            System.out.println("请输入正确的新增元素下标");
        }
        System.out.println(Arrays.toString(nums));
    }
}

public class TestOne {
    public static void main(String[] args) {
        // 删除指定索引位置的元素
        int[] nums = {74,38,96,42,37,60,0,0,0};
        int index = 1;// 删除的元素的下标

        int emptyIndex = -1;// 第一个空位的下标

        for (int i = 0; i < nums.length; i++) {
            if(nums[i] == 0){
                emptyIndex = i;
                break;
            }
        }

        if(emptyIndex == -1){
            // 没有空位元素
            for (int i = index; i < nums.length-1; i++) {
                nums[i] = nums[i+1];
            }
            nums[nums.length-1] = 0;
            System.out.println(Arrays.toString(nums));
        }else{
            // 有空位元素
            for (int i = index; i < emptyIndex; i++) {
                nums[i] = nums[i+1];
            }
            System.out.println(Arrays.toString(nums));
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027668.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号