java注意项--更新中

发布时间:2023年12月20日

前言:

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");

  1. String s1 = "hello";
    这种方式是使用字符串字面值直接赋值给变量s1。在Java中,字符串字面值会被放入字符串常量池中。如果字符串常量池中已经存在相同内容的字符串,那么变量s1将指向已存在的字符串对象。如果字符串常量池中没有相同内容的字符串,将创建一个新的字符串对象,并将其放入字符串常量池中,然后变量s1指向这个对象。

    例如:已经存在相同内容的字符串s5,所以s5和s6相等 指向相同的内存地址

    String s5 = "1" + "1";
    String s6 = "11";
    System.out.println(s5 == s6);
  2. 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循环的区别
  1. python中没有do ... while结构,java有
    1. 在 Java 中,for、while 和 do...while 是三种基本的循环结构:

    2. 在 Python 中,也有 for 和 while 循环,但没有 do...while 结构:

  2. 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整除。
					// 闰年的年份有: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') 判断给定的字符是否是数字,是则为true

6、截取字符串的第几位 到 第几位

截取的是 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 运算符 | 菜鸟教程

文章来源:https://blog.csdn.net/weixin_46932303/article/details/135105411
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。