java注意项--更新中

news2024/9/24 16:49:32

前言:

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 运算符 | 菜鸟教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1324230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web请求与响应

目录 Postman Postman简介 Postman的使用 请求 简单参数 实体参数 数组参数 集合参数 日期参数 Json参数 路径参数 响应 ResponseBody 统一响应结果 Postman Postman简介 postman是一款功能强大的网页调试与发送网页http请求的Chrome插件&#xff0c;常用于进行…

JavaSE 搜索树

目录 1 概念2 操作2.1 查找2.2 插入2.3 删除 3 性能分析4 和 java 类集的关系 1 概念 二叉搜索树 又称 二叉排序树&#xff0c;它是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值&#xff1b;若它…

MyBatis的ORM映射

目录 什么是ORM 一&#xff0c;列的别名 二&#xff0c;结果映射 三&#xff0c;总结 什么是ORM ORM&#xff1a;对象关系映射&#xff08;Object Relational Mapping&#xff0c;简称ORM&#xff09;模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简…

【六大排序详解】开篇 :插入排序 与 希尔排序

插入排序 与 希尔排序 六大排序之二 插入排序 与 希尔排序1 排序1.1排序的概念 2 插入排序2.1 插入排序原理2.2 排序步骤2.3 代码实现 3 希尔排序3.1 希尔排序原理3.2 排序步骤3.3 代码实现 4 时间复杂度分析 Thanks♪(&#xff65;ω&#xff65;)&#xff89;下一篇文章见&am…

统计分析绘图软件 GraphPad Prism 10 mac功能介绍

GraphPad Prism mac是一款专业的统计和绘图软件&#xff0c;主要用于生物医学研究、实验设计和数据分析。 GraphPad Prism mac功能和特点 数据导入和整理&#xff1a;GraphPad Prism 可以导入各种数据格式&#xff0c;并提供直观的界面用于整理、编辑和管理数据。用户可以轻松地…

MySQL——表的增删查改

目录 一.Create&#xff08;创建&#xff09; 1.单行数据 全列插入 2.多行数据 指定列插入 3.插入否则更新 4. 替换 二.Retrieve&#xff08;读取&#xff09; 1. select 列 查询 2.where 条件 3.结果排序 4.筛选分页结果 三.Update &#xff08;修改&#xff09;…

ROS学习笔记(七)---参数服务器

ROS学习笔记文章目录 01. ROS学习笔记(一)—Linux安装VScode 02. ROS学习笔记(二)—使用 VScode 开发 ROS 的Python程序&#xff08;简例&#xff09; 03. ROS学习笔记(三)—好用的终端Terminator 04. ROS学习笔记(四)—使用 VScode 启动launch文件运行多个节点 05. ROS学习笔…

SMARTFORMS打印问题

一、问题概述 项目中碰到EPSON针式打印机&#xff0c;SAP打印出来的三单合一&#xff0c;是想横向打印&#xff0c;结果不管怎么设置打印出来都是纵向的&#xff1b; 二、调整 1、首先调整SMARTFORMS的打印方向&#xff0c;使用T-CODE:SMARTFORMS&#xff0c;如下图&#xf…

嵌入式串口输入详细实例

学习目标 掌握串口初始化流程掌握串口输出单个字符掌握串口输出字符串掌握通过串口printf熟练掌握串口开发流程学习内容 需求 串口循环输出内容到PC机。 串口数据发送 添加Usart功能。 首先,选中Firmware,鼠标右键,点击Manage Project Items 接着,将gd32f4xx_usart.c添…

Dokit 开源库:简化 Android 应用开发的利器

Dokit 开源库&#xff1a;简化 Android 应用开发的利器 一、Dokit 简介二、Dokit 功能三、Dokit 使用3.1 DoKit Android 最新版本3.2 DoKit Android 接入步骤 四、总结 在 Android 应用开发过程中&#xff0c;我们经常需要处理调试、性能优化和用户体验等方面的问题。然而&…

【python】进阶--->并发编程之协程

一、协程 是另外一种实现多任务的方式,只不过比线程占用更小的执行单元(需要的资源).因为它自带cpu上下文,就可以在合适的时机,从一个协程切换到另一个协程. (任务数量多于cpu时)系统在很短的时间内,将cpu轮流分配给不同的任务执行,造成了多任务同时运行的错觉.而每个任务在运行…

全面解析找不到xinput1_3.dll无法继续执行代码的多种解决方案(实用教程)

xinput1_3.dll文件是什么&#xff1f; xinput1_3.dll是一个动态链接库文件&#xff0c;它是DirectInput的组件之一。DirectInput是微软公司开发的一种输入设备驱动程序&#xff0c;用于处理游戏控制器、键盘、鼠标等输入设备的信号。xinput1_3.dll文件主要负责处理游戏控制器的…

年终汇报这么写,升值加薪必有你!

#01 你这么能干&#xff0c; 老板知道吗&#xff1f; — 打工人最怕什么&#xff1f; 最怕你忙前忙后&#xff0c;干活一大堆&#xff0c;气出一身结节&#xff0c;锅还没少背&#xff0c;最后升职加薪没有你&#xff0c;出国旅游不带你&#xff1b;更怕你日常996&#xf…

C语言归并排序(合并排序)算法以及代码

合并排序是采用分治法&#xff0c;先将无序序列划分为有序子序列&#xff0c;再将有序子序列合并成一个有序序列的有效的排序算法。 原理&#xff1a;先将无序序列利用二分法划分为子序列&#xff0c;直至每个子序列只有一个元素(单元素序列必有序)&#xff0c;然后再对有序子序…

HTML5+CSS3小实例:纯CSS实现锚点平滑过渡

实例:纯CSS实现锚点平滑过渡 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"&…

宠物干货类软文怎么写?媒介盒子分享

虽然近年来生育率有所减少&#xff0c;但是养宠物的人却大大增加&#xff0c;随之而来的宠物经济也是一个值得关注的点。做宠物生意想要脱颖而出&#xff0c;可以依靠软文营销&#xff0c;其中宠物干货类软文由于其价值性能够带来较高的转化率今天媒介盒子主要来和大家聊聊宠物…

QT 前端技术 QSS(1)

伪装态是指当鼠标悬停在按钮上的时候&#xff0c;按钮的字体背景颜色等会发生改变。 这句话意思在this里面找到QTextEdit控件#后面表示指定的控件名称就是从所有QTextEdit中选出叫做lbsize的QTextEdit并对其进行后面的操作。 如果将QTextEdit#lbsize删除的话就是将this中全部的…

c语言编写http服务器(Linux下运行)

参考文章&#xff1a;https://blog.csdn.net/baixingyubxy/article/details/125964986?spm1001.2014.3001.5506 上面是详细讲解&#xff0c;我这篇是总结了他的代码&#xff0c;因为他没给整体代码 所有代码&#xff1a; #include <stdio.h> #include <stdlib.h&g…

echarts地图map点击某一区域设置选中颜色/select选中文字颜色设置无效

选中区域为红色&#xff0c;字体为白色 1.selectedMode: ‘single’,设置单选&#xff0c;多选&#xff0c;不选中 2.series/map/select属性 series: [{type: map,map: area,//单选selectedMode: single,aspectScale: 0.73,layoutCenter: [50%, 51%], //地图位置layoutSize: …

CEC2013(python):五种算法(OOA、WOA、GWO、DBO、HHO)求解CEC2013(python代码)

一、五种算法简介 1、鱼鹰优化算法OOA 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、蜣螂优化算法DBO 5、哈里斯鹰优化算法HHO 二、5种算法求解CEC2013 &#xff08;1&#xff09;CEC2013简介 参考文献&#xff1a; [1] Liang J J , Qu B Y , Suganthan P N , et al. Pro…