public
是一个访问修饰符,可以用于修饰类、方法、属性等,在一个Java文件中,关于public
的使用有以下规则:public
类,这个public
类的类名必须与源文件名保持一致,例如,如果源文件中public
类的类名是Employee
,那么源文件应该命名为Employee.java
。public
类。public
方法和public
属性。public class MyClass {
public static void main(String[] args) {..} // 主方法
public void doSomething() {..} // 非静态方法,无参数,无返回值
private static int calculateSum(int a, int b) {..} // 静态方法,有参数,有返回值
protected String sayHello(String name) {..} // 非静态方法,有参数,有返回值
}
MyClass
类中有四个方法,它们的访问修饰符、返回类型、是否为静态以及参数列表都是不同的,所以,并不是所有的方法都需要写成public static void
的格式。public
,那么这个类只能被同一个包内的其他类访问,类似于C++中的private。max
的方法,该方法接收两个整数参数并返回它们中的最大值:public class TestMax {
public static void main(String[] args) {
int i = 5;
int j = 2;
int k = max(i, j);
System.out.println(i + " 和 " + j + " 比较,最大值是:" + k);
}
public static int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
}
import java.util.Random;
,就相当于C++中调用库函数的声明,比如调用vector库#include
,而每一次创建一个类或者实例,例如,Random random = new Random();
,就相当于调用C++中创建一个函数,比如:vectorv;
,而每一次使用类的方法:int number = random.nextInt(100);
,就相当于使用C++vector下面的push_back函数。/**
* 这是一个文档注释,用于描述类、接口、方法或字段的详细信息
* 包括功能、用法、参数、返回值等
*/
public class MyClass {
// ...
}
整型:包括byte
、short
、int
和long
。
byte
:8位有符号二进制补码整数,取值范围从-128到127。
short
:16位有符号二进制补码整数,取值范围从-32768到32767。
int
:32位有符号二进制补码整数,取值范围从-2147483648到2147483647。
long
:64位有符号二进制补码整数,取值范围从-9223372036854774808到9223372036854774807。
浮点型:包括float
和double
。
float
:单精度32位IEEE 754浮点数。
double
:双精度64位IEEE 754浮点数。
字符型:char
,单一的16位Unicode字符。
布尔型:boolean
,只有两个取值:true
和false
。
' '
将字符赋值给char
变量。例如:char ch = 'a';
\u
后跟四位十六进制数来表示Unicode字符。例如:char uniChar = '\u039A';
\
开头。例如:char newline = '\n'; // 表示换行符
char tab = '\t'; // 表示制表符
char backslash = '\\'; // 表示反斜杠本身
char c = 97;
\uXXXX
,其中XXXX
是四位十六进制数)会在解析代码之前得到处理,包括注释中的Unicode转义序列,这意味着,即使Unicode转义序列在注释中,它仍然会被Java编译器解析。byte->short->int->long->float->double->String
byte+short
至少用int类型,byte+byte
也要用int,同理short+short
也是。char
类型运算也是int接收。long a=123123123123;//错误用法,超过精度
long b=123123123123L;//正确
long c=123;//正确
()
。boolean b = true;
String str = "hello";
System.out.println(str+b);
// 二进制
int binary = 0b1010; // "0b" 或 "0B" 开头表示二进制
// 八进制
int octal = 01234; // "0" 开头表示八进制
// 十六进制
int hex = 0x1a2b; // "0x" 或 "0X" 开头表示十六进制,即0-9,a-f
instanceof
:在Java中,instanceof
是一个二元运算符,用于测试一个对象是否为给定类型的实例]。instanceof
运算符的结果是 true
或 false
],它也被称为类型比较运算符,因为它将实例与类型进行比较。instanceof
运算符的基本语法是:(object) instanceof (type)
。在对未知对象进行强制类型转换之前,应始终使用 instanceof
检查,这样做可以帮助避免在运行时出现 ClassCastException
。这个在后面会着重写。& :如果符号左边是 false,则继续执行符号右边的操作
&&:如果符号左边是 false,则不再继续执行符号右边的操作
| :如果符号左边是 true, 则继续执行符号右边的操作
||:如果符号左边是 true,则不再继续执行符号右边的操作
>>>
:在JAVA中,>>>
是一个位于运算符称为无符号右移运算符,它能将二进制数的所有位向右移动指定的位数,左边空出的位用零补齐,而右边溢出的直接被丢弃,因为其不考虑最高位即符号位,所以被称之为无符号运算符。而>>
是算术右移运算符,它将二进制数的所有位向右移动指定的位数,左边空出的位用符号位填充,也就是说,如果数字是正数,左边会填充0;如果数字是负数,左边会填充1。这是因为 >>
运算符会保留数字的符号。System.out.println();:打印一个字符串并换行。
System.out.print();:打印一个字符串但不换行。
System.out.printf();:格式化输出。
System.out.println("Hello, World!"); // 输出 "Hello, World!" 并换行
System.out.print("Hello, "); // 输出 "Hello, " 但不换行
System.out.print("World!"); // 输出 "World!" 但不换行
System.out.printf("Hello, %s!", "World"); // 格式化输出 "Hello, World!"
int i = 100;
double pi = 3.14;
String str = "Java";
System.out.printf("%d\n", i); // 输出整数
System.out.printf("%f\n", pi); // 输出浮点数
System.out.printf("%s\n", str); // 输出字符串
import java.util.Scanner;
class Input {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("输入一个整数: ");
int number = input.nextInt();
System.out.println("您输入 " + number);
input.close();
}
}
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符:");
char c = scanner.next().charAt(0);
System.out.println("你输入的字符是:" + c);
scanner.close();
}
}
import java.util.Scanner;
public class test {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String s ;
System.out.print("输入: ");
s = input.next();
if(s.equals("是")){
System.out.println("好");
}
input.close();
}
}
// 使用 Math.random() 生成 [0, 1) 区间的随机小数
double random1 = Math.random();
// 使用 Math.random() 生成 [1, 10] 区间的随机整数
int random2 = (int)(Math.random() * 10) + 1;
// 创建一个 Random 对象
Random random = new Random();
// 使用 Random 对象生成 [0, 100) 区间的随机整数
int random3 = random.nextInt(100);
// 使用 Random 对象生成一个随机布尔值
boolean random4 = random.nextBoolean();
在Java中,可以使用Math.sqrt()函数来计算一个数的平方根。例如:
double num = 16;
double squareRoot = Math.sqrt(num);
System.out.println("The square root of " + num + " is " + squareRoot);
这段代码将输出:
The square root of 16 is 4.0
// 定义数组类型为整数的数组,动态初始化
int[] arr1 = new int[5]; // 定义一个长度为5的整数数组
// 定义并初始化数组,静态初始化简写,类型推断,不可拆
int[] arr2 = {1, 2, 3, 4, 5}; // 定义并初始化一个整数数组
// 交换数组名字与[]
int arr3 [] = new int[3]; // 使用new关键字创建一个长度为3的整数数组
//先定义,后赋值
int[] arr;
arr = new int[3];
//静态初始化
int[] arr = new int[]{1,2,3,4,5};
// 可以拆分
int[] arr;
arr = new int[]{1,2,3,4,5};
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
int[] arr = new int[5];
Arrays.fill(arr, 1);
System.out.println(Arrays.toString(arr)); // [1, 1, 1, 1, 1]
}
}
int a[7],int [9]a;
一旦成功初始化,长度就确定了,并且无法更改。并且有{},[]内就不会有数字,有数字,就不会有{}。public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5};
//打印数组的属性,输出结果是5
System.out.println(arr.length);
}
public static void main(String[] args) {
//定义存储int类型数组,赋值元素1,2,3,4,5
int[] arr = {1,2,3,4,5};
//为0索引元素赋值为6
arr[0] = 6;
//获取数组0索引上的元素
int i = arr[0];
System.out.println(i);
//直接输出数组0索引元素
System.out.println(arr[0]);
}
整形:0;
浮点型:0.0;
字符型:0;//并非字符'0',而是\u0000;
boolean:false;
string及其他引用类型:null;
int[][] array1 = new int[10][10];
int array2[][] = new int[10][10];
int array3[][] = { { 1, 1, 1 }, { 2, 2, 2 } };
int array4[][] = new int[][] { { 1, 1, 1 }, { 2, 2, 2 } };
int[][] array = new int[3][];
int array[][] = {{1,2},{1,4,6}};
array[0] = new int[1];
array[1] = new int[2];
array[2] = new int[3];
int length1 = array.length;
int length2 = array[0].length;
// 获取二维数组的第一维长度(3)
System.out.println(length1);
// 获取二维数组的第一维的第一个数组长度(1)
System.out.println(length2);
a[0] = b;//a是二维数组,b是一维数组
int [][]array = {{1,2,3},{1,2}};
System.out.println(array[0][0]);
System.out.print(array[0]);
int [][]array = new int[][]{{1,2,3},{1,2}};
for(int i=0;i<array.length();i++){
for(int j=0;j<array[i].length;j++){
System.out.print(array[i][j]);
}
System.out.println();
}
整型外层数组默认值:地址;
整型内层默认值:0;
Boolean外层数组默认值:地址;
Boolean内层默认值:false;
........
int array[] = {1,2,3};
int arr[];
arr = array;
arr[0] = 9;
System.out.print(array[0]);
int arr[] = {1,2,3,4,5};
int newarr[] = new int[arr.length<<1];
arr = newarr;
public class test {
public static void my_sort(int []arr,int l,int r){
if(l>=r){
return ;
}
int temp=arr[l],i=l-1,j=r+1;
while(i<j){
do{
i++;
}while(arr[i]<temp);
do{
j--;
}while(arr[j]>temp);
if(i<j){
int k=arr[i];
arr[i]=arr[j];
arr[j]=k;
}
}
my_sort(arr,l,j);
my_sort(arr,j+1,r);
}
public static void main(String[] args){
int []arr = {1,5,7,2,4,8,2};
my_sort(arr,0,arr.length-1);
for(int k:arr){
System.out.print(k);
}
}
}
int[] array = {1, 2, 3, 4, 5};
int length = array.length;
System.out.println("数组的长度为:" + length);
int[] array = {1, 2, 3, 4, 5};
int[] newArray = array.clone();
System.out.println("复制的数组为:" + Arrays.toString(newArray));
int[] array1 = {1, 2, 3, 4, 5};
int[] array2 = {1, 2, 3, 4, 5};
boolean isEqual = Arrays.equals(array1, array2);
System.out.println("两个数组是否相等:" + isEqual);
int[] array = new int[5];
Arrays.fill(array, 10);
System.out.println("填充后的数组为:" + Arrays.toString(array));
int[] array = {5, 3, 8, 2, 1};
Arrays.sort(array);
System.out.println("排序后的数组为:" + Arrays.toString(array));
int[] array = {1, 2, 3, 4, 5};
int index = Arrays.binarySearch(array, 3);
System.out.println("元素3的索引为:" + index);
int[] array = {1, 2, 3, 4, 5};
int[] newArray = Arrays.copyOf(array, 3);
System.out.println("复制的数组为:" + Arrays.toString(newArray));
String[] array = {"A", "B", "C"};
List<String> list = Arrays.asList(array);
System.out.println("转换后的List为:" + list);
int[] array = {1, 2, 3, 4, 5};
String arrayString = Arrays.toString(array);
System.out.println("数组转换为字符串:" + arrayString);
int[] array = {1, 2, 3, 4, 5};
int hashCode = Arrays.hashCode(array);
System.out.println("数组的哈希码值为:" + hashCo