Java介绍(这里可以跳过不看,写这部分的原因主要是避免CSDN那不聪明的发文助手):Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
在平时,我们也经常会用到Java,有时我们可能会用它来写一个动态Web应用,或者移动端APP应用,又或者是在Leecode上面刷题。然而,在入门Java时,我们会经常遇到下面的问题,因此,我这里做一个简单的小总结。
1. 输入必需要使用的包
import java.util.Scanner;
2. 输入一个整型数值
- import java.util.Scanner;
- public class Enter {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int a = sc.nextInt();
- System.out.println(a);
- }
- }
3. 输入一组整型数值
- import java.util.Scanner;
- public class Enter {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int m = 3;
- int []a = new int[m]; // 定义长度为m的一维数组
- for (int i=0; i
// 循环输入m个数 - a[i] = sc.nextInt();
- }
- System.out.printf("%d %d %d\n", a[0], a[1], a[2]);
- }
- }
4. 输入一个浮点数值(输入一组浮点数值的做法请参考上面int类型的数据)
- import java.util.Scanner;
- public class Enter {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- float a = sc.nextFloat();
- System.out.println(a);
- }
- }
5. 输入一个字符串
- import java.util.Scanner;
- public class Enter {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- String a = sc.nextLine();
- System.out.println(a);
- }
- }
注意事项:Scanner对象接收字符串。我建议,在接收数值型数据的时候,用同一个Scanner对象来接收。在需要接收字符串的时候,再new一个Scanner对象,用来专门接收字符串。否则,输入的时候可能会遇到奇奇怪怪的问题。
二、输出
1. 格式化输出(我这里强烈建议,掌握下面这个即可),下面的代码包括了
整型数据的输出,
浮点型数据的输出,
自定义小数位浮点型数据的输入,
以及字符串的输出
- public class Enter {
- public static void main(String[] args) {
- int a = 10;
- float b = 1.0f;
- String c = "Hello world!";
- System.out.printf("a=%d, b=%f, b=%.3f, c=%s", a, b, b, c);
- }
- }
程序输出
a=10, b=1.000000, b=1.000, c=Hello world!
1. 一维动态数组,以及它的输入方法
需求来自:例如我输入一个数值m,希望分配给我一个长度为m的动态数组。
- import java.util.Scanner;
- public class Enter {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in); // 设置一个Scanner对象
- int m = sc.nextInt(); // 输入数组长度m
- int []array = new int[m]; // 分配一个长度为m的动态数组
- for(int i=0; i
// 输入m个数字 - array[i] = sc.nextInt();
- }
- for(int i=0; i
// 输出 - System.out.printf("%d ", array[i]);
- }
- }
- }
程序输出(前两行是输入,最后一行是输出)
- 3
- 1 2 3
- 1 2 3
2. 二维动态数组,以及它的输入方法
- import java.util.Scanner;
- public class Enter {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in); // 设置一个Scanner对象
- int m = sc.nextInt(); // 输入行数m
- int n = sc.nextInt(); // 输入列数n
- int [][]array = new int[m][n]; // 分配一个行数为m、列数为n的动态数组
- for(int i=0; i
// 输入m行n列个数字 - for (int j=0; j
- array[i][j] = sc.nextInt();
- }
- }
- for(int i=0; i
// 输出 - for (int j=0; j
- System.out.printf("%d ", array[i][j]);
- }
- System.out.printf("\n");
- }
- }
- }
程序输出(前面四行是输入,最后三行是输出)
- 3 2
- 1 99
- 2 100
- 3 101
- 1 99
- 2 100
- 3 101
3. 列表(可视为一种动态数组)
必需要使用的包(会用一种即可,我推荐使用ArrayList)
import java.util.ArrayList;
追加、删除、改变、查找一个item,以及list的遍历
- import java.util.ArrayList;
- public class Enter {
- public static void main(String[] args) {
- ArrayList
list = new ArrayList<>(); - // 增加item(分别追加0、1、2、3)
- list.add(0); // 传入的参数为Integer对象
- list.add(1);
- list.add(2);
- list.add(3);
- output_list(list);
- // 删除item(即删除最后一个item)
- list.remove(list.size()-1); // 传入的参数为index
- output_list(list);
- // 改变item(改变最后一个元素的值为999)
- list.set(list.size()-1, 999); // 传入的参数分别为index、new value
- output_list(list);
- // 查询item:一种是通过下标,另外一种是自己遍历匹配查询,这里用的是前者
- System.out.printf("%d", list.get(0));// 查询index为0的元素
- }
-
- // 遍历list
- public static void output_list(ArrayList
list) { - int n = list.size();
- for (int i=0; i
- System.out.printf("%d ", list.get(i));
- }
- System.out.printf("\n");
- }
- }
程序输出
- 0 1 2 3 // 分别追加 0、1、2、3
- 0 1 2 // 删除最后一个元素3
- 0 1 999 // 更新最后一个元素2的值更新为999
- 0 // 查询index=0的元素0
4. 队列(通过列表拓展)
队列的思想是先进先出。如果通过列表实现队列的话,那么,可以将列表的第一个元素定义为队头,最后一个元素定义为队尾。此时,入队操作为,向列表追加一个item;出队操作为,删除列表的第一个item。
入队、出队示例
- import java.util.ArrayList;
- public class Enter {
- public static void main(String[] args) {
- ArrayList
queue = new ArrayList<>(); - // 689、999、9999依次入队
- queue.add(689);
- queue.add(999);
- queue.add(9999);
- output_list(queue); // 输出一下queue(实际上queue不能这样输出,因为它是队列)
- // 出队
- queue.remove(0);
- output_list(queue); // 输出一下queue(实际上queue不能这样输出,因为它是队列)
- }
-
- // 遍历list
- public static void output_list(ArrayList
list) { - int n = list.size();
- for (int i=0; i
- System.out.printf("%d ", list.get(i));
- }
- System.out.printf("\n");
- }
- }
程序输出
- 689 999 9999 // 顺序执行3次入队
- 999 9999 // 执行1次出队
5. 栈(通过列表拓展)
栈的思想是先进后出。如果通过列表实现栈的话,那么,可以将列表的最后一个元素定义为栈顶。此时,入栈操作为,向列表追加一个item;入栈操作为,删除列表的最后一个item。
入栈、出栈示例
- import java.util.ArrayList;
- public class Enter {
- public static void main(String[] args) {
- ArrayList
stack = new ArrayList<>(); - // 689、999、9999依次入栈
- stack.add(689);
- stack.add(999);
- stack.add(9999);
- output_list(stack); // 输出一下stack(实际上stack不能这样输出,因为它是栈)
- // 出栈
- stack.remove(stack.size()-1);
- output_list(stack); // 输出一下stack(实际上stack不能这样输出,因为它是栈)
- }
-
- // 遍历list
- public static void output_list(ArrayList
list) { - int n = list.size();
- for (int i=0; i
- System.out.printf("%d ", list.get(i));
- }
- System.out.printf("\n");
- }
- }
输出
- 689 999 9999 // 顺序执行3次入栈
- 689 999 // 执行1次出栈
四、强制类型转换int、float、String
三者之间的相互转换
- public class Enter {
- public static void main(String[] args) {
- // int转float
- int int_a = 100;
- float float_a = (float) int_a;
- System.out.printf("int转float:a=%d,转换后,a=%f\n", int_a, float_a);
-
- // float转int
- float float_b = 2.34f;
- int int_b = (int) float_b;
- System.out.printf("float转int:b=%f,转换后,b=%d\n", float_b, int_b);
-
- // int转String
- int int_c = 1099;
- String string_c = String.valueOf(int_c);
- System.out.printf("int转String:c=%d,转换后,c=%s\n", int_c, string_c);
-
- // String转int
- String string_d = "2048";
- int int_d = Integer.valueOf(string_d);
- System.out.printf("String转int:d=%s,转换后,d=%d\n", string_d, int_d);
-
- // float转String
- float float_e = 88.88f;
- String string_e = String.valueOf(float_e);
- System.out.printf("float转String:e=%f,转换后,e=%s\n", float_e, string_e);
-
- // String转float
- String string_f = "99.99";
- float float_f = Float.valueOf(string_f);
- System.out.printf("String转float:f=%s,转换后,f=%f\n", string_f, float_f);
- }
- }
程序输出
- int转float:a=100,转换后,a=100.000000
- float转int:b=2.340000,转换后,b=2 // 如果b=-2.34,转int后,b=-2
- int转String:c=1099,转换后,c=1099
- String转int:d=2048,转换后,d=2048
- float转String:e=88.879997,转换后,e=88.88
- String转float:f=99.99,转换后,f=99.989998
五、字符串:遍历、拼接、分割
1. 字符串是Leecode经常遇到的考察内容,遍历重点在于charAt()方法和length()方法
- public class Enter {
- public static void main(String[] args) {
- String a_str = "Hello world!";
- int n = a_str.length();
- for (int i=0; i
- System.out.printf("%c", a_str.charAt(i));
- }
- }
- }
程序输出
Hello world!
2. 拼接,例如"hello"和"world"拼接在一起得到"hello world"。会一种即可,直接使用“+”操作。
- public class Enter {
- public static void main(String[] args) {
- String a = "Hello";
- String b = " world";
- String c = a + b;
- System.out.printf("a=%s, b=%s, c=%s", a, b, c);
- }
- }
程序输出
a=Hello, b= world, c=Hello world
3. 分割,例如按照空格" "分割,重点在于split()方法和数组的length属性。
- public class Enter {
- public static void main(String[] args) {
- String a = "Hello, I am a student.";
- String[] split_result = a.split(" ");
- int n_part = split_result.length;
- for (int i=0; i< n_part; i++){
- System.out.printf("%s\n", split_result[i]);
- }
- }
- }
程序输出
- Hello,
- I
- am
- a
- student.
-
相关阅读:
RabbitMQ如何确保消息发送和消息接收
音视频学习 - windows10 + vs2019环境编译ffmpeg
低版本浏览器使用最新渲染模式以免IE不支持CSS3属性
C/C++陷阱——临时变量的产生和特性
【Python学习笔记】Python中的heapq
【mysql】ssl_choose_client_version:unsupported protocol
C++贪心算法之乘船问题
带刹车死区的互补输出与捕获实验
bson数据通过BulkOperations批量入库mongo表报重复ID处理
如何使用Solidity和Hardhat构建你自己的NFT以及NFT交易市场
-
原文地址:https://blog.csdn.net/qq_36158230/article/details/126714746