Java基础(3)

Java 数据类型详解

九、运算符

1. 基本运算符

Java 提供了多种运算符来执行不同的操作:

  • 算术运算符+(加)、-(减)、*(乘)、/(除)、%(取模)。
  • 关系运算符==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
  • 逻辑运算符&&(逻辑与)、||(逻辑或)、!(逻辑非)。
  • 赋值运算符=(赋值)、+=(加等于)、-=(减等于)、*=(乘等于)、/=(除等于)、%=(取模等于)。
  • 位运算符&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)、>>>(无符号右移)。
  • 三元运算符? :

2. 使用示例

int a = 10, b = 20;
System.out.println(a + b);  // 输出:30
System.out.println(a == b); // 输出:false
System.out.println(a > b && a < b); // 输出:false

十、字符串(本质上是 char 类型数组)

1. 内存图

Java 字符串存储在内存的栈和堆中。使用 String 关键字声明的字符串通常会存储在常量池中,而使用 new 关键字则会在堆中开辟新的内存空间。

2. 字符串常量池

String a = "123";
String b = "123";
System.out.println(a == b); // 输出: true

原因ab 都指向字符串常量池中的同一内存地址,因此它们相等。

3. String 类型的创建方式

  • String 变量 = "内容";:直接使用字符串常量池。
  • String 变量 = new String("内容");:在堆中创建新对象。
String a = "123";
String c = new String("123");
System.out.println(a == c); // 输出: false

原因a 存储在常量池中,而 c 是一个新的对象,地址不同。

4. ==equals() 的区别与联系

  • ==:比较地址。
  • equals():比较内容。
String a = "123";
String c = new String("123");
System.out.println(a.equals(c)); // 输出: true

5. String方法(常用)

String a="hello world!";
(1)length()方法:获取字符串长度
int length=a.length();
System.out.println(length);

输出:12(空格也是一个字符)

(2)charAt(index):根据位置获取指定的字符
int ch=a.charAt(1);
System.out.println(ch);

输出:e (从零开始获取)

(3)subString(index):截取字符串,index为左闭右开区间
int b=a.subString(6);
System.out.println(b);

输出 world!

int b=a.subString(6,11);
System.out.println(b);

输出 world

(4)contains(子串)判断是否有子串
System.out.println(a.contains("llo"));

输出 true

(5)replace(char oldChar,char newChar)子串替换
int newa=a.replace('o','x');
System.out.println(newa);

输出hellx wxrld!

(6)replace(String oldChar,String newChar)字符串替换
int newa=a.replace("world1","hello");
System.out.println(newa);

输出 hello hello

(7)split(" 根据什么分割")字符串分割
String str="apple,banana,orange";
String[] parts=str.split(",");
for(int i=0;i<parts.length;i++){
System.out.println(parts[i]);
}

输出 apple banana orange

6. KMP 算法

KMP 算法是一种用于在大字符串中查找小字符串的高效算法。它通过预处理模式串,避免重复比较,从而提高搜索效率。

7. 字符串的拼接

补充:反编译 javap -c

格式

  • 格式①

    String s1 = "123";
    String s2 = "456";
    String s3 = s1 + s2;
    String s4 = "123456";
    System.out.println(s3 == s4); // 输出: false
    

    注意:单独输出 s3 的值也为 "123456",但 s3s4 的地址不同。

  • 格式②

    String s3 = "123" + "456";
    String s4 = "123456";
    System.out.println(s3 == s4); // 输出: true
    

为什么两种方式字符串拼接的判断结果不同?

通过反编译(对 .class 文件执行 javap -c 命令)可以解释这种现象:

  • 第一种方式s3 是通过字符串拼接方法(appendtoString)生成的,toString 方法中包含 new 关键字,这会在堆内存中重新生成一个新的对象。因此,s3s4 的内存地址不同,导致 == 判断为 false

  • 第二种方式:在编译期间,字符串常量的拼接操作会被优化为一个常量表达式。编译器会在编译时将 "123" + "456" 优化为 "123456",并直接存储在字符串常量池中。因此,s3s4 指向相同的内存地址,== 判断为 true

十一、输入

使用 Scanner 类来读取用户输入:

Scanner scanner = new Scanner(System.in);
String input = scanner.next();
System.out.println("输入的内容是: " + input);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL学习笔记:PostgreSQL vs MySQL

PostgreSQL 和 MySQL 都是广泛使用的关系型数据库管理系统&#xff0c;它们有以下一些对比&#xff1a; 一、功能特性 1. 数据类型支持 PostgreSQL&#xff1a;支持丰富的数据类型&#xff0c;包括数组、JSON、JSONB、范围类型、几何类型等。对于复杂数据结构的存储和处理非…

Linux下PostgreSQL-12.0安装部署详细步骤

一、安装环境 postgresql-12.0 CentOS-7.6 注意&#xff1a;确认linux系统可以正常连接网络&#xff0c;因为在后面需要添加依赖包。 二、pg数据库安装包下载 下载地址&#xff1a;PostgreSQL: File Browser 选择要安装的版本进行下载&#xff1a; 三、安装依赖包 在要安…

C语言内存之旅:从静态到动态的跨越

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一 动态内存管理的必要性二 动态…

[STM32 HAL库]串口中断编程思路

一、前言 最近在准备蓝桥杯比赛&#xff08;嵌入式赛道&#xff09;&#xff0c;研究了以下串口空闲中断DMA接收不定长的数据&#xff0c;感觉这个方法的接收效率很高&#xff0c;十分好用。方法配置都成功了&#xff0c;但是有一个点需要进行考虑&#xff0c;就是一般我们需要…

PyTorch使用教程(10)-torchinfo.summary网络结构可视化详细说明

1、基本介绍 torchinfo是一个为PyTorch用户量身定做的开源工具&#xff0c;其核心功能之一是summary函数。这个函数旨在简化模型的开发与调试流程&#xff0c;让模型架构一目了然。通过torchinfo的summary函数&#xff0c;用户可以快速获取模型的详细结构和统计信息&#xff0…

Java模拟路由协议-rip(路由器仿真实验)

前言&#xff1a; 好久不见&#xff0c;有段时间没有写文章了&#xff0c;本篇文章&#xff0c;由Blue我带大家来复现rip协议。我们以 b站湖南教师匠所讲rip的视频中的例子为我这篇文章所模拟的路由路径 如图&#xff1a; 模拟路径 视频&#xff1a;http://【深入浅出计算机网络…

32V/4A,降压DCDC转换器CP8384百分百占空比输出ESOP8封装,可适用HUB等电路设计

特点&#xff1a; ● Supply Voltage Range: 4.1V~32V ● Input voltage up to 40V ● 4A Continuous Output Current ● Up to 95% Output Efficiency ● CC/CV control ● 350kHz Switching Frequency ● Built-in Soft Start ● 100% Maximum Duty Cycle ● No External Com…

缓存、数据库双写一致性解决方案

双写一致性问题的核心是确保数据库和缓存之间的数据同步&#xff0c;以避免缓存与数据库数据不同步的问题&#xff0c;尤其是在高并发和异步环境下。本文将探讨双写一致性面临的主要问题和解决方案&#xff0c;重点关注最终一致性。 本文讨论的是最终一致性问题 双写一致性面…

【学习笔记15】如何在非root服务器中,安装属于自己的redis

一、下载安装包 官网下载黑马程序员给的安装包&#xff08;redis-6.2.6&#xff09; 二、将安装包上传至服务器 我将安装包上传在我的文件夹/home/XXX&#xff0c;指定路径中/src/local/redis/&#xff0c;绝对路径为/home/XXX/src/local/redis/解压安装包 XXXomega:~$ cd …

计算机网络 (51)鉴别

前言 计算机网络鉴别是信息安全领域中的一项关键技术&#xff0c;主要用于验证用户或信息的真实性&#xff0c;以及确保信息的完整性和来源的可靠性。 一、目的与重要性 鉴别的目的是验明用户或信息的正身&#xff0c;对实体声称的身份进行唯一识别&#xff0c;以便验证其访问请…

【大模型】ChatGPT 高效处理图片技巧使用详解

目录 一、前言 二、ChatGPT 4 图片处理介绍 2.1 ChatGPT 4 图片处理概述 2.1.1 图像识别与分类 2.1.2 图像搜索 2.1.3 图像生成 2.1.4 多模态理解 2.1.5 细粒度图像识别 2.1.6 生成式图像任务处理 2.1.7 图像与文本互动 2.2 ChatGPT 4 图片处理应用场景 三、文生图操…

后端:MyBatis

文章目录 1. MyBatis1-1. Mybatis 工具类的封装1-2. Mybatis 通过集合或实体类传递参数-实现插入数据(增)1-3. MyBatis 实现删除数据(删)1-4. MyBatis 实现修改数据(改)1-5. MyBatis 实现查询数据(查) 2. MyBatis 配置文件中的一些标签和属性2-1.environments标签2-2. dataSour…

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(1.标准版)

问题 项目里使用了 AzureBlob 存储了用户上传的各种资源文件&#xff0c;近期 AzureBlob 的流量费用增长很快&#xff0c;想通过分析Blob的日志&#xff0c;获取一些可用的信息&#xff0c;所以有了这个需求&#xff1a;将存储账户的日志&#xff08;读写&#xff0c;审计&…

数字化时代,传统代理模式的变革之路

在数字化飞速发展的今天&#xff0c;线上线下融合&#xff08;O2O&#xff09;成了商业领域的大趋势。这股潮流&#xff0c;正猛烈冲击着传统代理模式&#xff0c;给它带来了新的改变。 咱们先看看线上线下融合现在啥情况。线上渠道那是越来越多&#xff0c;企业纷纷在电商平台…

【AI | pytorch】torch.polar的使用

一、torch.polar的使用 torch.polar 是 PyTorch 中用来生成复数张量的一个函数&#xff0c;但它与数学中的复数表达式 ( z re^{i\theta} ) 是等价的。 具体来说&#xff0c;torch.polar(abs, angle) 接受两个实数张量参数&#xff1a; abs&#xff1a;表示复数的模长&#…

LeetCode 110.平衡二叉树

题目描述 给定一个二叉树&#xff0c;判断它是否是平衡二叉树。 示例 1&#xff1a; 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;false 示例 3&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;true 提示&#xff1a; …

数据结构(Java版)第四期:ArrayLIst和顺序表(上)

目录 一、顺序表 1.1. 接口的实现 二、ArrayList简介 2.1. ArrayList的构造 2.2. ArrayList的常见操作 2.3. ArrayList的扩容机制 三、ArrayList的具体使用 3.1. 洗牌算法 3.2. 杨辉三角 一、顺序表 上一期我们讲到过&#xff0c;顺序表本质上和数组是差不多的&#…

阿里云 Serverless 助力盟主直播:高并发下的稳定性和成本优化

在直播场景中&#xff0c;阿里云 Serverless 应用引擎 SAE 提供的无缝弹性伸缩与极速部署能力&#xff0c;确保直播间高并发时的流畅体验&#xff0c;降低了我们的运营成本&#xff0c;简化了运维流程。结合阿里云云原生数据库 PolarDB 的 Serverless 能力&#xff0c;实现了数…

【机器学习实战入门】基于深度学习的乳腺癌分类

什么是深度学习&#xff1f; 作为对机器学习的一种深入方法&#xff0c;深度学习受到了人类大脑和其生物神经网络的启发。它包括深层神经网络、递归神经网络、卷积神经网络和深度信念网络等架构&#xff0c;这些架构由多层组成&#xff0c;数据必须通过这些层才能最终产生输出。…

Qt之QDjango-db的简单使用

QDjango是一款由C编写、依托于Qt库的Web开发框架&#xff0c;其设计理念受到了广受欢迎的Python框架Django的影响。这个项目旨在提供一个高效、灵活且易于使用的工具集&#xff0c;帮助开发者构建高质量的Web应用。其项目地址: https://gitcode.com/gh_mirrors/qd/qdjango&…