前言:
1.大小写规定
? 1.1.类名和接口名:每个单词首字母大写。如GoodStudent;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?是一个单词的时候首字母大写。如Student;
? 1.2.变量和方法名:第一个首字母小写,后序首字母大写。如firstName;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?是一个单词的时候全部小写 如name;
原文链接:https://blog.csdn.net/m0_67474739/article/details/129745810
????????在 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 中,for、while 和 do...while 是三种基本的循环结构:
在 Python 中,也有 for 和 while 循环,但没有 do...while 结构:
java循环为:for(int i=0; i< 10;i ++ ),无range函数,相当于python中的for i in range(10)
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整除。
// 闰年的年份有:1904
if (((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'); // 用构造函数创建字符串
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各种类型的定义方式 | ||
---|---|---|
定义基本数据 | 整数 | 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}} |
声明数组变量 | 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 可以看成一个两行三列的数组。 |