java-基本程序设计结构序设计结构

简介: 基本数据类型public class Main { public static void main(String[]args) { // 2进制表示--10进制为3 System.out.println(0b0011); // 16进制表示--10进制为14 System.out.println(0xe); // 8进制表示--10进制为8 System.out.println(010); // 可以在数字中加下划线便于阅读 System.out.prin

基本数据类型

public class Main  {
    public static void main(String[]args) {
        // 2进制表示--10进制为3
        System.out.println(0b0011);
        // 16进制表示--10进制为14
        System.out.println(0xe);
        // 8进制表示--10进制为8
        System.out.println(010);
        // 可以在数字中加下划线便于阅读
        System.out.println(100_100_100);
        // 长整型可以加一个'L'作为后缀
        System.out.println(1000000000L);
        // float类型的浮点数后面使用后缀'F',double类型的浮点数后面使用后缀'D',
        System.out.println(0.01F);
        System.out.println(0.01D);
    }
}

数组深拷贝和浅拷贝

Arrays.copyof(原始数组,新数组的长度)

如果数组元素是数值型,那么多余的元素将被赋值为0 ; 如果数组元素是布尔型, 则将赋值为false。相反, 如果长度小于原始数组的长度,则只拷贝最前面的数据元素。

import java.util.Arrays;
public class Main  {
    public static void main(String[]args) {
        int[] arr = {1,2,3,4,5};
        int[] cloneArr = arr;
        int[] p = Arrays.copyOf(arr,arr.length);
        arr[1] = 10;
        for (int num: arr) {
            System.out.printf(num + " ");
        }
        System.out.println();
        for (int num: cloneArr) {
            System.out.printf(num + " ");
        }
        System.out.println();
        for (int num: p) {
            System.out.printf(num + " ");
        }
    }
}

输出:

1 10 3 4 5 
1 10 3 4 5 
1 2 3 4 5

数组排序

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
public class InterfaceTest {
    public static void main(String[] args) {
        Integer[] arr = {19,67,55,9,20,35};
        // 升序排序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        // 降序排序
        // 第一种方法:Collections.reverseOrder()
        Arrays.sort(arr, Collections.reverseOrder());
        System.out.println(Arrays.toString(arr));
        // 第二种方法:实现Comparator接口
        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                // o1.compare(o2)返回正数,说明o1比o2大
                // 正序排序: o1 - o2 > 0
                // 降序排序: o2 - o1 > 0
                // return Integer.compare(o2,o1);
                return o2 - o1;
            }
        });
        // 更简洁的写法: lambda表达式
        Arrays.sort(arr, (o1,o2) -> o2 - o1);
        System.out.println(Arrays.toString(arr));
    }
}

多维数组

每一行的数据长度可以不相等,创建多维数组时必须指定行数

import java.util.Arrays;
public class Main  {
    public static void main(String[]args) {
        final int MAX = 10;
        // 指定行数
        int[][] arr = new int[MAX][];
        // 分配行的长度
        for (int i = 0; i < MAX; i++) {
            arr[i] = new int[i+1];
        }
        for (int i = 0; i < MAX; i++) {
            for (int j = 0; j <= i; j++) {
                arr[i][j] = j+1;
            }
        }
        for (int[] row : arr) {
            for (int val: row) {
                System.out.print(val + " ");
            }
            System.out.println();
        }
        // 快速打印二维数组的值
        System.out.println(Arrays.deepToString(arr));
    }
}

交换数组的任意两行

import java.util.Arrays;
public class Main  {
    public static void main(String[]args) {
        int[][] arr = {{1,2,3},{4,5,6,7}};
        int[] tmp = arr[0];
        arr[0] = arr[1];
        arr[1] = tmp;
        System.out.println(Arrays.deepToString(arr));
    }
}

二维数组复制

public class Main  {
    public static void main(String[]args) {
        int[][] arr = {{1,2,3},{4,5,6,7}};
        // 长度为行数
        int[][] arr_copy = Arrays.copyOf(arr,2);
        System.out.println(Arrays.deepToString(arr_copy));
    }
}

不可变字符串

String ans = String.join(",","hello","are","you","ok"); // 使用逗号分隔字符串
System.out.println("hello".equalsIgnoreCase("HEllo")); // true 不区分大小写比较

控制台程序

import java.io.Console;
public class Main  {
    public static void main(String[]args) {
        Console console = System.console();
        String str = console.readLine("User name: ");
        char[] password = console.readPassword("password: ");
        System.out.println(str);
        for (int i = 0; i < password.length; i++) {
            System.out.println(password[i]);
        }
    }
}

格式化输出

对第i个参数多次不同的格式化输出

import java.util.Date;
public class Main  {
    public static void main(String[]args) {
        String name = "Alice";
        int age = 18;
        String message = String.format("Hello %s,Next year you will be %d",name,age+1);
        System.out.println(message);
        System.out.printf("%.2f%%\n",20*100/100.0);
        System.out.printf("%1$s %2$tB %2$te, %2$tY\n", "Due date:", new Date());
        System.out.printf("%1$.2f,%1$.3f,%1$.4f",100/3.0);
    }
}

带标签的break

标签必须放在希望跳出的最外层循环之前, 并且必须紧跟一个冒号:

可以将一个标签放在想要跳到的语句块之前,类似于goto的作用

import java.util.Scanner;
public class Main  {
    public static void main(String[]args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        label:
        for (int i = 0; i < n; i++) {
            if (i == 10) {
                System.out.println(i);
                break label;
            } else {
                System.out.println(i);
            }
        }
    }
}

大整数

import java.math.BigInteger;
public class Main  {
    public static void main(String[]args) {
        // 使用字符串创建大整数
        BigInteger bigInteger = new BigInteger("11111111111111111111111111111111111111111111111111111111");
        // 最大只支持long
        BigInteger bigInteger1 = BigInteger.valueOf(111111111);
        // 四则运算+取模
        System.out.println(bigInteger.add(bigInteger1));
        System.out.println(bigInteger.subtract(bigInteger1));
        System.out.println(bigInteger.multiply(BigInteger.valueOf(1111111)));
        System.out.println(bigInteger.divide(new BigInteger("11111111")));
        System.out.println(bigInteger.mod(bigInteger1));
    }
}

java匹配一个或多个空格

// 匹配一个或多个空格
String [] words = sentence.split("\\s+");
for (String s : words) {
    System.out.println(s);
}

BufferedReader和BufferedWriter

BufferedReader读入数据

BufferedWriter输出数据

IO数据大的时候替换Scanner输入和System.out输出

import java.io.*;
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine(); // 一行一行读入
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        bw.write(str);
        bw.write("\n");
        bw.flush(); // 记得刷新缓存
    }
}

StringBuilder和StringBuffer

可变字符串,String是不可变字符串

public class Main {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("hello ");
        sb.append("world!");
        System.out.println(sb);
        // 字符串反转,String没有这个方法
        System.out.println(sb.reverse());
        StringBuilder builder = new StringBuilder("AAA");
        builder.append(" BBB");
        System.out.println(builder);
    }
}
相关文章
|
11天前
|
Java 测试技术 开发者
💡Java 零基础:彻底掌握 for 循环,打造高效程序设计
【10月更文挑战第15天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
103 63
|
15天前
|
存储 算法 Java
🚀Java零基础-顺序结构详解 🚀
【10月更文挑战第11天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
29 6
|
22天前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
33 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
3月前
|
Java
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
|
3月前
|
Java
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
|
3月前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
53 0