前言:
1.大小写规定
1.1.类名和接口名:每个单词首字母大写。如GoodStudent;
是一个单词的时候首字母大写。如Student;
1.2.变量和方法名:第一个首字母小写,后序首字母大写。如firstName;
是一个单词的时候全部小写 如name;
原文链接:https://blog.csdn.net/m0_67474739/article/details/129745810
一、== 和 equal的区别
在 Java 中:
- == 用于比较两个对象的引用是否相同,即它们是否指向相同的内存地址。对于基本数据类型,== 用于比较它们的值是否相等。
- equals() 是一个方法,用于比较两个对象的内容是否相等。通常需要重写 equals() 方法来定义对象相等的逻辑,因为默认的 equals() 方法是比较对象的引用地址。
在 Python 中:
- == 用于比较两个对象的值是否相等。对于对象,它比较的是它们的值,对于基本数据类型也是比较它们的值。
- 对于自定义的类,可以通过重写 eq() 方法来定义对象相等的逻辑,使得 == 操作符可以比较对象的内容。
2、对1中的这句进行解释 (== 用于比较两个对象的引用是否相同,即它们是否指向相同的内存地址)
String s1="hello" 和 String s1 = new String("hello");
-
String s1 = "hello";
这种方式是使用字符串字面值直接赋值给变量s1。在Java中,字符串字面值会被放入字符串常量池中。如果字符串常量池中已经存在相同内容的字符串,那么变量s1将指向已存在的字符串对象。如果字符串常量池中没有相同内容的字符串,将创建一个新的字符串对象,并将其放入字符串常量池中,然后变量s1指向这个对象。例如:已经存在相同内容的字符串s5,所以s5和s6相等 指向相同的内存地址
String s5 = "1" + "1"; String s6 = "11"; System.out.println(s5 == s6);
-
String s1 = new String("hello");
这种方式是使用new关键字创建一个新的字符串对象,不管字符串常量池中是否已经存在相同内容的字符串。这样做会在堆内存中创建一个新的字符串对象,而不是放入字符串常量池中。因此,变量s1将始终指向一个新的字符串对象。例如:创建一个新的字符串对象,所以s1和s2指向的不同的内存地址
String s1 = new String("hello");
String s2 = new String("hello");
则s1==s2就是false
总的来说,使用字符串字面值赋值给变量s1会利用字符串常量池来管理字符串对象,而使用new关键字创建字符串对象会在堆内存中创建一个新的对象。这是两者的主要区别。
二、java中&&和&区别
逻辑运算符:&& | |
位运算符:& |
三、java与python循环的区别
- python中没有do ... while结构,java有
-
在 Java 中,for、while 和 do...while 是三种基本的循环结构:
-
在 Python 中,也有 for 和 while 循环,但没有 do...while 结构:
-
-
java循环为:for(int i=0; i< 10;i ++ ),无range函数,相当于python中的for i in range(10)
四、switch-case的应用
1、判断某年-月,有多少天
public class TestSwitch2 {public static void main(String[] args) {try{Scanner scanner = new Scanner(System.in);System.out.println("请输入年份 1-12: ");// 它的作用是从标准输入(通常是键盘输入)读取下一个整数。int year = scanner.nextInt();System.out.println("请输入月份 1-12: ");int month = scanner.nextInt();int days;switch (month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:days = 31;break;case 4:case 6:case 9:case 11:days = 30;break;case 2:// 闰年的判断条件为:1、能被4整除但不能被100整除 2、或者能被400整除。// 闰年的年份有:1904if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){days = 29;}else{days = 28;}break;default:System.out.println("无效的月份");return;}System.out.println(month + "月有" + days + "天");}catch (Exception e){System.out.println("输出异常信息:" + e);}}
}
2、判断输入身份证的合法性
package com.java.test1;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;/*** @author 啊啊啊* @date 2023/12/20 14:47* @projectname javaTest202312* @methode 判断输入身份证的合法性*/
public class TestSwitchCard {public static void main(String[] args) {// 1、输入身份证Scanner scanner = new Scanner(System.in);System.out.println("请输入身份证号:");// nextLine() 方法会读取并返回输入中的下一行,包括换行符在内。注意要用String 要不然报错String idNumber = scanner.nextLine();// 调用身份证是否合法的函数if (isValidIdNumber(idNumber)) {System.out.println(idNumber + "身份证号是合法的");} else {System.out.println(idNumber + "身份证号是不合法的");}}public static boolean isValidIdNumber(String idNumber) {// 2、判断是否为18位if (idNumber == null || idNumber.length() != 18) {return false;}// 3、判断最后一位是否正确 数字 或 X --- idNumber.charAt(i) 是 Java 中用于获取字符串 idNumber 中索引为 i 的字符的方法char lastChar = idNumber.charAt(17);if (!Character.isDigit(lastChar) && lastChar != 'X' && lastChar != 'x') {return false;}// 验证非最后一位,都是0-9的数字组成for (int i = 0; i < 17; i++) {// 不是数字if (!Character.isDigit(idNumber.charAt(i))) {return false;}}// 4、判断 年-月-日 组成的日期是否合法 411422 19950411 1221,其中substring方法的参数是起始位置和结束位置(不包括结束位置)String birthday = idNumber.substring(6, 14);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmdd");dateFormat.setLenient(false);try {dateFormat.parse(birthday);} catch (ParseException e) {return false;}// 均未返回false,则返回true,为合法身份证return true;}}
其中,需要注意的点有:
1.1、键盘输入字符串
Scanner scanner = new Scanner(System.in); System.out.println("请输入身份证号:"); String idNumber = scanner.nextLine();1.2、键盘输入整数
Scanner scanner = new Scanner(System.in); System.out.println("请输入年份 1-12: "); // 它的作用是从标准输入(通常是键盘输入)读取下一个整数。 int year = scanner.nextInt();2、根据return值的类型,写 boolean 还是 int等
public static boolean isValidIdNumber(String idNumber) {
3、计算字符串的长度,则 idNumber.length()
4、
idNumber.charAt(i) 是 Java 中用于获取字符串 idNumber 中索引为 i 的字符的方法
5、
Character.isDigit('9') 判断给定的字符是否是数字,是则为true6、截取字符串的第几位 到 第几位
截取的是 idNumber.substring(6, 14),包括索引6但不包括索引14位
五、包装类和基本数据类型的使用
参考:java包装类的介绍和使用_java 包装类传参-CSDN博客
使用包装类的示例场景代码
1、在集合类中存储基本数据类型:ArrayList<Integer> list = new ArrayList<>();
int num = 5;
list.add(num); // 自动装箱,将基本数据类型int转换为Integer对象并添加到ArrayList中2、将基本数据类型作为对象进行操作:
void printNumber(Integer num) {System.out.println(num);
}int value = 10;
printNumber(value); // 自动装箱,将基本数据类型int转换为Integer对象并传递给printNumber方法3、类型转换或比较:
String numberStr = "123";
int number = Integer.parseInt(numberStr); // 将字符串转换为整数
Integer a = 5;
Integer b = 5;
if (a.equals(b)) {System.out.println("a and b are equal"); // 使用equals方法比较两个Integer对象的值
}
六、包装类的详细介绍
1.1 Character 类:Character 类在对象中包装一个基本类型 char 的值,也就是需要使用char类型的对象时,可以用Character创建一个Character类
Character ch = new Character('a'); // 用构造函数创建字符串
- 注意:其中 Character类的方法有 isDigit() 是否是一个数字字符、isLetter() 是否是一个字母
1.2 String 类:
方法1:String str1 = "Tom";
方法2:String str2 = new String("Tom");
注意区别:
String 创建的字符串存储在公共池中(方法1),而 new 创建的字符串对象在堆上(方法2--所以地址是不一样的):
String s1 = "Runoob"; // String 直接创建 --- = "Runoob"
String s2 = "Runoob"; // String 直接创建
String s3 = s1; // 相同引用
String s4 = new String("Runoob"); // String 对象创建 --- = new String("Runoob");
String s5 = new String("Runoob"); // String 对象创建
七、java各种类型的定义方式
java各种类型的定义方式 | ||
---|---|---|
定义基本数据 | 整数 | int number = 10; |
浮点数 | double salary = 100.51//双精度浮点数变量 | |
布尔类型 | boolean isStudent = true; | |
字符 | char grade = 'A' | |
定义引用类型 | 字符串类型 | String name = "Tom" |
定义Scanner类型 | Scanner scanner = new Scanner (System.in) | |
定义Random类型 | Random random = new Random(); | |
定义数组类型 | 整数数组 | int[] numbers = {1,2,3,4,5} |
字符串数组 | String[] names = new String[5]; | |
二维数组 | double[][] maxtix = {{1.0,2.0},{3.0,4.0}} |
八、java数组相关的使用(示例)
声明数组变量 | double[] myList int[] myList |
创建数组 | double[] myList = new double[size]; double[] myList = {1.9, 2.9, 3.4, 3.5}; int[] array= new int[]; |
数组可以作为参数传递给方法 | public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } } |
数组最为函数的返回值 | public static int[] reverse(int[] list) { int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } return result; } |
多维数组 | String[][] str = new String[3][4]; |
多维数组初始化 | int[][] a = new int[2][3]; //二维数组 a 可以看成一个两行三列的数组。 |
参考:Java 运算符 | 菜鸟教程