首页 > 编程语言 >Java 初学 day11

Java 初学 day11

时间:2024-10-16 15:11:14浏览次数:1  
标签:Java String StringBuffer System 初学 day11 println public out

Java 11

常用类

练习

import java.util.Scanner;

/*
    字符串反转
    举例:键盘录入”abc”       输出结果:”cba”

 */
public class StringTest1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = sc.next();
        //将字符串转字符数组
        char[] chars = str.toCharArray(); //['a','b','c']

        for (int front = 0, end = chars.length - 1; front < end; front++, end--) {
            char tmp = chars[end];
            chars[end] = chars[front];
            chars[front] = tmp;
        }
        //['c','b','a']
        String resStr = new String(chars);
        System.out.println("反转后:" + resStr);


    }
}
/*
    统计大串中小串出现的次数(作业)
    举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次

 */
public class StringTest2 {
    public static void main(String[] args) {
        String bigStr = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";

        int counts = 0;

        String smallStr = "java";

        while (bigStr.contains(smallStr)){ // 4 8
            counts++;
            bigStr = bigStr.substring(bigStr.indexOf(smallStr)+smallStr.length());
        }


        System.out.println("共计找小字符串 "+smallStr+" 出现 "+counts+"次");
    }
}

1、StringBuffer

String与StringBuffer的区别

我们如果对字符串进行拼接操作,每一次拼接都会构建一个新的String对象,既耗时又浪费空间,而StringBuffer就可以解决这个问题
StringBuffer是线程安全的可变字符序列

概述

StringBuffer: 可变的字符序列,可以看作一个存储字符的一个容器
构造方法:
    public StringBuffer()
    public StringBuffer(int capacity)
    public StringBuffer(String str)
public class StringBufferDemo1 {
    public static void main(String[] args) {
        //public StringBuffer() 创建默认大小的StringBuffer容器
//        StringBuffer sb1 = new StringBuffer();
//        //获取默认StringBuffer容器的大小
//        System.out.println("StringBuffer默认的容量大小为:" + sb1.capacity()); // 16
//        System.out.println("sb1: " + sb1);
//        System.out.println("StringBuffer实际存储字符数量:"+ sb1.length()); // 0

        //public StringBuffer(int capacity) 创建指定大小容量的StringBuffer
//        StringBuffer sb2 = new StringBuffer(50);
//        System.out.println("StringBuffer默认的容量大小为:" + sb2.capacity()); // 50
//        System.out.println("sb1: " + sb2);
//        System.out.println("StringBuffer实际存储字符数量:" + sb2.length()); // 0

        //public StringBuffer(String str) 创建默认大小的StringBuffer容器,其中存储了一个字符串
        StringBuffer sb3 = new StringBuffer("hello");
        System.out.println("StringBuffer默认的容量大小为:" + sb3.capacity()); // 21
        System.out.println("sb1: " + sb3);
        System.out.println("StringBuffer实际存储字符数量:" + sb3.length()); // 5
    }
}

StringBuffer中的成员方法:

添加功能

public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)

删除功能

public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)

替换功能

public StringBuffer replace(int start,int end,String str)

反转功能

public StringBuffer reverse()
public class StringBufferDemo2 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        System.out.println("sb: " + sb);
        System.out.println("------------------------");
        //public StringBuffer append(String str) 在StringBuffer末尾处添加新的字符串
//        StringBuffer sb2 = sb.append(100);
//        System.out.println("sb: "+sb);
//        System.out.println("sb2: "+sb2);
//        System.out.println(sb==sb2);
        sb.append(100);
        sb.append(12.343);
        sb.append(true);
        System.out.println("sb: " + sb);
        System.out.println("------------------------");

        //public StringBuffer insert(int offset,String str) 在StringBuffer指定位置中添加字符串
        //10012.343true
        sb.insert(10,"java");
        System.out.println("sb: " + sb);
        System.out.println("------------------------");

        //public StringBuffer deleteCharAt(int index) 指定索引删除StringBuffer某一个字符
        //10012.343tjavarue
        sb.deleteCharAt(5);
        System.out.println("sb: " + sb);
        System.out.println("------------------------");

        //public StringBuffer delete(int start,int end) 指定开始和结束索引,删除StringBuffer一部分字符
        //10012343tjavarue
        sb.delete(9,13); //[start, end)
        System.out.println("sb: " + sb);
        System.out.println("------------------------");

        //public StringBuffer replace(int start,int end,String str) 使用字符串替换StringBuffer一部分字符
        //10012343true
        sb.replace(6,9,"李刚");
        System.out.println("sb: " + sb);
        System.out.println("------------------------");

        //public StringBuffer reverse()
        //100123李刚rue
        sb.reverse();
        System.out.println("sb: " + sb);
        System.out.println("------------------------");

    }
}
/*
    public String substring(int start)
    public String substring(int start,int end)

 */
public class StringBufferDemo3 {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer("hello world java hadoop");

        //public String substring(int start)
        String s1 = sb1.substring(4);
        System.out.println("sb1: "+sb1);
        System.out.println("s1: "+s1);

        //public String substring(int start,int end)
        String s2 = sb1.substring(6, 11);
        System.out.println("sb1: "+sb1);
        System.out.println("s2: "+s2);

    }
}

String和StringBuffer的相互转换

数据类型之间相互转换的场景:
1、方法传参所需的类型与我自己值的类型不一样
2、需要借助其它类型中的方法完成某功能
public class StringBufferDemo4 {
    public static void main(String[] args) {
        String s1 = "hello";
        //String -> StringBuffer
        StringBuffer sb1 = new StringBuffer(s1);


        //StringBuffer->String
        String s2 = sb1.substring(0);
        String s3 = sb1.toString();
    }
}

例题

1

/*
    把数组拼接成一个字符串
 */
public class StringBufferTest1 {
    public static void main(String[] args) {
        int[] arr = {11,22,33,44,55}; // "[11,22,33,44,55]"

        StringBuffer sb = new StringBuffer("[");
        for(int i=0;i<arr.length;i++){
            if(i==arr.length-1){
                sb.append(arr[i]).append("]");
            }else {
                sb.append(arr[i]).append(",");
            }
        }
        String res = sb.toString();
        System.out.println(res);
    }
}

2

/*
    判断一个字符串是否是对称字符串
    例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串

 */
public class StringBufferTest2 {
    public static void main(String[] args) {
        String s = "abba";

        //定义一个标志变量
        boolean flag = true;

        for(int front=0,end=s.length()-1;front<end;front++,end--){
            char frontChar = s.charAt(front);
            char endChar = s.charAt(end);
            if(frontChar!=endChar){
                System.out.println("该字符串不是一个对称字符串....");
                flag = false;
                break;
            }
        }

        if(flag){
            System.out.println("该字符串是一个对称字符串!!");
        }


    }
}

3

/*
    看程序写结果:
        String作为参数传递
        StringBuffer作为参数传递

 */
public class StringBufferTest3 {
    public static void main(String[] args) {
//        String s1 = "hello";
//        String s2 = "world";
//        System.out.println("s1: " + s1 + ", s2: " + s2); // s1: hello,s2: world
//        change(s1,s2);
//        System.out.println("s1: " + s1 + ", s2: " + s2); // s1: hello,s2: world

        StringBuffer sb1 = new StringBuffer("hello");
        StringBuffer sb2 = new StringBuffer("world");
        System.out.println("sb1: "+sb1+", sb2: "+sb2); // sb1: hello, sb2: world
        change(sb1,sb2);
        System.out.println("sb1: "+sb1+", sb2: "+sb2); // sb1: hello, sb2: worldworld

    }

    public static void change(StringBuffer sb1,StringBuffer sb2){
        sb1 = sb2;
        sb1.append(sb2);
        System.out.println("sb1: "+sb1+", sb2: "+sb2); // sb1: worldworld, sb2: worldworld
    }

    public static void change(String s1,String s2){
        s1 = s2;
        s2 = s1+s2;
        System.out.println("s1: " + s1 + ", s2: " + s2); // s1: world,s2: worldworld
    }
}

2、System类

概述

System: 是和系统操作相关的类
    public static void gc() 垃圾回收
    public static void exit(int status) 强制退出程序
    public static long currentTimeMillis()
public class SystemDemo1 {
    public static void main(String[] args) {
//        for(int i=0;i<=10;i++){
//            if(i==5){
//                System.exit(1);
//            }
//            System.out.println(i);
//        }
//
//        System.out.println("hello world");

        //public static long currentTimeMillis() 获取当前的时间戳
        //从1970年开始,1月1日0点0分0秒
//        System.out.println(System.currentTimeMillis());
        //....


    }
}

3、Data类

概述

Date: java为了描述日期,提供了一个Date类
构造方法:
    Date() 分配一个 Date对象,并初始化它,以便它代表它被分配的时间,测量到最近的毫秒。
    Date(long date) 分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。

SimpleDateFormat: java为了格式化日期提供的一个类
构造方法:
    SimpleDateFormat(String pattern) 使用给定模式 SimpleDateFormat并使用默认的 FORMAT语言环境的默认日期格式符号。
//需求:将时间戳转成指定的格式输出

public class DateDemo1 {
    public static void main(String[] args) throws Exception{
//        Date d1 = new Date(); // 获取当前时间日期
//        System.out.println(d1); // Sat Sep 28 16:01:22 CST 2024

        // Date(long date) 将毫秒级别的时间戳转成Date类型对象
        Date d2 = new Date(1727510083386L);
        System.out.println(d2); // Sat Sep 28 15:54:43 CST 2024

        //xxxx年xx月xx日 xx时xx分xx秒
        //xxxx-xx-xx xx:xx:xx
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 a");
        String time = sdf.format(d2); // Date -> String
        System.out.println(time);

        Date d3 = sdf.parse("2024年09月28日 03时54分43秒 下午");// String -> date
        System.out.println(d3);


    }
}

4、包装类

包装类:
    java针对每一个基本数据类型都提供了与之对应的引用数据类型
        byte         Byte
        short        Short
        int          Integer
        long         Long
        float        Float
        double       Double
        boolean      Boolean
        char         Character
public class IntegerDemo1 {
    public static void main(String[] args) {
        int a = 10;
        //获取int类型的最大值
        System.out.println(Integer.MAX_VALUE);

//        Integer i = new Integer(100);
//        Integer i = new Integer("100"); // "100" -> 100
//        System.out.println(i);

        Integer i = 100; // 自动装箱
        //当包装类做运算的时候,会自动将其中包装的值拆出来进行运算
        System.out.println(i+100);  // 自动拆箱
        System.out.println("--------------------------------");
        //将字符串转int类型
        int i1 = Integer.parseInt("100"); // String -> int
        System.out.println(i1);
        Integer i2 = Integer.valueOf("100"); // String -> Integer
        System.out.println(i2);
        Integer i3 = Integer.valueOf(100); // int -> Integer
        Integer i4 = 200;
        String s1 = i4.toString(); // Integer -> String
        String s2 = String.valueOf(100); // int -> String

        System.out.println("--------------------------------");
        //Character是char的包装类
        Character c1 = 'a'; // 自动装箱
        Character c2 = new Character('b');
        Character c3 = new Character('8');

        /*
            public static boolean isUpperCase(char ch)
            public static boolean isLowerCase(char ch)
            public static boolean isDigit(char ch)
            public static char toUpperCase(char ch)
            public static char toLowerCase(char ch)

         */
        System.out.println(Character.isUpperCase('b'));
        System.out.println(Character.isLowerCase('b'));
        System.out.println(Character.isDigit('e')); // 判断字符是否是数字
        System.out.println(Character.isDigit('9'));
        System.out.println(Character.toUpperCase('m'));
        System.out.println(Character.toLowerCase('P'));


    }
}

标签:Java,String,StringBuffer,System,初学,day11,println,public,out
From: https://www.cnblogs.com/qianzhiqiang798/p/18469969

相关文章

  • 使用 Spring 框架构建 MVC 应用程序:初学者教程
    SpringFramework是一个功能强大、功能丰富且设计精良的Java平台框架。它提供了一系列编程和配置模型,旨在简化和精简Java中健壮且可测试的应用程序的开发过程。人们常说Java太复杂了,构建简单的应用程序需要很长时间。尽管如此,Java提供了一个稳定的平台,周围有一个非常成熟......
  • javaWeb项目-ssm+jsp股票交易管理系统功能介绍
    本项目源码(点击下方链接下载):java-ssm+jsp股票交易管理系统实现源码(项目源码-说明文档)资源-CSDN文库项目关键技术开发工具:IDEA、Eclipse编程语言:Java数据库:MySQL5.7+框架:ssm、Springboot前端:Vue、ElementUI关键技术:springboot、SSM、vue、MYSQL、MAVEN数据库工......
  • 前端新手教程:HTML、CSS 和 JavaScript 全面详解及实用案例
    一、引言在当今数字化的时代,前端开发扮演着至关重要的角色,它决定了用户与网页和应用程序交互的体验。HTML、CSS和JavaScript作为前端开发的核心技术,分别负责网页的结构、样式和交互。本教程将为前端新手全面深入地介绍HTML、CSS和JavaScript的知识点,并通过实用案例帮助......
  • Java遍历Map集合的方法
    Java中遍历  Map 集合的常用方式主要有以下几种:1.使用 keySet()方法遍历 遍历Map的key集合,然后通过key获取value。Map<String,Integer>map=newHashMap<>();map.put("one",1);map.put("two",2);map.put("three",3);for(Stringkey......
  • 6.JAVA环境准备-->JDK
    【1】下载JDK www.oracle.com/technetwork/java/javase/downloads/index.html  外网环境下载比较慢;这里推荐华为镜像进行下载,先选版本,再选对应系统新手window直接选择 https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-windows-x64.exe【2】安装JDK 下......
  • java毕业设计-基于Springboot的社区医疗服务可视化系统【d代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:Springboot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能管理员管理:负责系统后台维护,确保运行......
  • 明显感觉到今年的Java后端面试风向变了,难怪现在很多人都找不到工作.....
    互联网公司太多了但一些相关的面试步骤和注意事项是大差不差的,我们就以腾讯公司面试为例:面试流程......
  • 每日OJ题_牛客_礼物的最大价值_路径dp_C++_Java
    目录牛客_礼物的最大价值_路径dp题目解析C++代码Java代码牛客_礼物的最大价值_路径dp礼物的最大价值_牛客题霸_牛客网(nowcoder.com)描述:        在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子......
  • <转>javaIO流之缓冲流
     简介Java的缓冲流是对字节流和字符流的一种封装,通过在内存中开辟缓冲区来提高I/O操作的效率。Java通过BufferedInputStream和BufferedOutputStream来实现字节流的缓冲,通过BufferedReader和BufferedWriter来实现字符流的缓冲。缓冲流的工作原理是将数据先写入缓冲......
  • 深入了解 Java 拦截器与过滤器
    在构建JavaWeb应用程序时,拦截器(Interceptor) 和 过滤器(Filter) 是两个重要的概念。它们在不同阶段拦截和处理HTTP请求和响应,帮助开发者对应用的处理流程进行更精细的控制。虽然它们在表面上看似相似,但拦截器和过滤器有着不同的架构设计和使用场景。本文将详细介绍它们的......