java基本知识详解


八大基本数据类型

java的数据类型可以说很简洁,只有整型,浮点型,字符型,和布尔型四大种,八小种基本类型。

整型

byte
-2^7 ~ 2^7-1,即-128 ~ 127。1字节。

short:-2^15 ~ 2^15-1,即-32768 ~ 32767。2字节。

int

  • int有符号:-2^31 ~ 2^31-1,即-2147483648 ~ 2147483647。4字节。Integer。
  • int无符号:0~2^32-1。

long:-2^63 ~ 2^63-1,即-9223372036854774808 ~ 9223372036854774807。8字节。Long。末尾加L。(也可以不加L)

浮点型

float:4字节

**double:**8字节

字符型

**char:**2字节

布尔型

**boolean:**1字节

基本数据类型包装类

基本数据类型对应包装类

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

Character

Character静态方法(里面包含了对字符的一些处理):

  • Character.isLetter(ch)判断一个字符是否为字母,当为字母时,则返回true,否则返回false
  • Character.isDigit(ch)判断ch单字符是否是数字
  • Character.toLowerCase(ch)将ch单字符转换为小写字母,如果里面有其他字符,原样输出。
  • Character.toUpperCase(ch)将ch单字符转换为大写字母,如果里面有其他字符,原样输出。
  • Character.isWhitespace(ch)判断ch单字符是否为字母

自动装箱和拆箱

类型最大最小值

最小值: Integer.MIN_VALUE = -231= -21 4748 3648
最大值:Integer.MAX_VALUE=231-1=21 4748 3647(21亿左右)

数组

数组定义与使用

定义

int[] array = new int[5];

Array的静态方法

Arrays类常用方法:

  • 1.Arrays.toString():快速输出数组内容
    • Arrays.toString(a)
  • 2.Arrays.sort()方法:数组排序,默认升序排列
    • Arrays.sort(数组名)
    • Arrays.sort(数组名,起始下标,终止下标)
规则:起始下标 <= 数组 < 终止下标

例如:Arrays.sort(a,14)
排序:将下标 1, 2, 3 的数字排序

注意:
    1. 数字代表着下标
    2. 边界左闭右开
  • Arrays.sort(数组名,起始下标,终止下标,排序规则)
源码:
    public static <T> void sort(T[] a,int fromIndex, int toIndex,  Comparator<? super T> c)

Comparator - 排序规则:默认为从小到大,如果想要倒序,需要传入Comparator参数,来改变排序规则


例如:将二维数组按照第一个元素倒序排列
int[][] values = new int[n][3];
for (int i = 0; i < n; i++) {
    values[i][0] = aliceValues[i] + bobValues[i];
    values[i][1] = aliceValues[i];
    values[i][2] = bobValues[i];
}
Arrays.sort(values, (a, b) -> b[0] - a[0]);

可以看到,实现倒序的方法:
    1. 使用Lambda表达式,实现Comparator函数式接口
    2. 使用第二个参数值 - 第一个参数值

神奇的:
    1. 返回的值类型,是第一个参数values一个二维数组
    2. 而排序规则,是Lambda表达式中的参数来排序
  • 3.Arrays.equals()方法:比较两个数组内容是否相等
    • booleanisSame= Arrays.equals(a,b);
  • 4.Arrays.binarySearch():在数组中查找元素
    • int Arrays.binarySearch( Datatype[], Datatype key)
  • 5.Arrays.copyOf():复制数组,并设置复制的大小
    • arr2 = Arrays.copyOf(arr1, 10)
  • 6.Arrays.fill(arr, -1):对数组进行数值填充(用-1将数组填充)

字符串

字符串常用方法

int length():返回字符串的长度

char charAt(int index):返回指定索引处的字符

boolean isEmpty():判断字符串是否为空

String toLowerCase():将字符串中的所有字符转换为小写

String toUpperCase():将字符串中的所有字符转换为大写

String trim():返回字符串的副本,去掉前导空白和尾部空白,中间的空白不会被去掉

boolean equals(Object obj):比较字符串的内容是否相同

boolean equalsIgnoreCase(String anotherString):忽略大小写,比较字符串的内容是否相同

String concat(String str):将指定字符串连接到此字符串的结尾,等价于用“+int compareTo(String anotherString):比较两个字符串的大小

String substring(int beginIndex):返回从beginIndex到末尾的子字符串

String substring(int beginIndex, int endIndex):返回从beginIndex到endIndex前一位的子字符串,不包括endIndex



boolean endsWith(String suffix): 判断字符串是否以指定的后缀结束

boolean startsWith(String prefix):判断字符串是否以指定的前缀开始

boolean startsWith(String prefix, int toffset):判断字符串在指定索引开始的子字符串是否以指定前缀开始

boolean contains(CharSequence s):判断当前字符串中是否包含指定的字符串



int indexOf(String str):返回指定子字符串在当前字符串中第一次出现处的索引

int indexOf(String str, int fromIndex):返回从指定的索引后,指定子字符串在当前字符串中第一次出现处的索引

int lastIndexOf(String str):返回指定子字符串在当前字符串中最后一次出现处的索引

int lastIndexOf(String str, int fromIndex):返回从指定的索引后,指定子字符串在当前字符串中最后一次出现处的索引
注:indexOf和lastIndexOf方法如果未查找到指定子字符串时,返回值都为-1String replace(char oldChar, char newChar):替换当前字符串中指定的子字符串

String[] split(String regex):根据指定的符号拆分当前字符串,然后返回一个String数组

字符串和整数转换

字符串转整数

三种方式:
new Integer(String s)
Integer.parseInt(String s)
Integer.valueOf(String s)

Integer.valueOf()和Integer.parseInt()的不同:
Integer.valueOf()和Integer.valueOf()两个方法的返回值类型不一样
Integer.valueOf()返回一个Integer类型的数据,是int的包装类
Integer.parseInt()返回一个int类型的数据。
如果使用int类型数据接受返回值,两者没有什么不同,但是如果使用Integer类型数据接受返回值,Integer.valueOf()会报警告。

int整数转字符串
  1. Integer.toString(int num)
  2. String.valueOf(i)
字符串与字符

字符串转字符:

s.charAt(i)

字符转字符串:
法1:String构造方法

char[] ch=new char(){'1','2','3'};
string str=new string(ch);

法2:Character

char ch = 'U';
String charToString = Character.toString(ch);

法3:使用String.valueOf()

char ch = 'U';
String valueOfchar = String.valueOf(ch);

法4:和字符串直接拼接

char ch = 'U';
String str = "" + ch;

字符串转字符数组:

char[] arr = s.toCharArray();

字符数组转字符串:

new String(arr)

字符与整数转化
  • 整数x转字符a:char a =(char)(‘a’+x) – 整数转字符串,强转即可
  • 字符a转整数x:int x = a - ‘a’

StringBuilder 和 StringBuffer

String 底层值char[]型常量,修改他,java底层会给他重新创建一个空间来存储修改值
而StringBuilder和StringBuffer,底层是char[]型,是变量,修改值,会在原来的空间直接修改

StringBuffer和StringBuilder中常用的方法:

StringBuffer append(xxx):拼接字符串
StringBuffer delete(int start,int end):删除指定范围的内容,左开右闭
StringBuffer replace(int start, int end, String str):替换指定范围的内容
StringBuffer insert(int offset, xxx):在指定位置插入指定的内容
StringBuffer reverse() :把当前字符序列逆转

public int indexOf(String str) : 返回指定子字符串在当前字符串中第一次出现处的索引
public String substring(int start,int end) :返回指定范围的子字符串
public int length() : 返回字符串的长度
public char charAt(int n ) : 获取指定索引处的字符
public void setCharAt(int n ,char ch) : 设置指定索引处的字符

setLength(int newLength) :设置长度

面试题:String、StringBuffer和StringBuilder的异同?
相同点:底层都是通过char数组实现的
不同点:
String对象一旦创建,其值是不能修改的,如果要修改,会重新开辟内存空间来存储修改之后的对象;而StringBuffer和StringBuilder对象的值是可以被修改的;
StringBuffer几乎所有的方法都使用synchronized实现了同步,线程比较安全,在多线程系统中可以保证数据同步,但是效率比较低;而StringBuilder 没有实现同步,线程不安全,在多线程系统中不能使用 StringBuilder,但是效率比较高。
如果我们在实际开发过程中需要对字符串进行频繁的修改,不要使用String,否则会造成内存空间的浪费;当需要考虑线程安全的场景下使用 StringBuffer,如果不需要考虑线程安全,追求效率的场景下可以使用 StringBuilder。

运算符todo

Java运算符分为以下几种:

➤算术运算符:+,-,*,/,%,++,–

➤赋值运算符:=

➤扩展后的赋值运算符:+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=

➤位运算符:&,|,~,^,<<,>>,>>>

➤比较运算符:>,>=,<,<=,==

➤逻辑运算符:&&,&,||,|,!,^

➤三目运算符:? :

  • &:按位与。当两位同时为1时才返回1。

  • |:按位或。只要有一位为1就返回1。

  • ~:按位非。单目运算符,将操作数的每一位(包括符号位)全部取反。

  • ^:按位异或。当两位不同时返回1,相同时返回0。

  • <<:左移运算符。

  • :右移运算符

  • :无符号右移运算符

三目运算符

(expression) ? if-true-statement : if-false-statement

三目运算符的语法规则是:先对逻辑表达式expression求值,如果expression返回true,则返回第二个操作数的值,否则返回第三个操作数的值。

示例:

if (aliceSum > bobSum) {
    return 1;
} else if (aliceSum == bobSum) {
    return 0;
} else {
    return -1;
}

->

return aliceSum > bobSum ? 1 : aliceSum == bobSum ? 0 : -1;

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

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

相关文章

SpringIOC之support模块PropertySourcesPlaceholderConfigurer

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

app对接优量汇收益如何?

优量汇作为国内头部的广告联盟&#xff0c;开发者在对接时要注意哪些方面&#xff1f; AdSet官网 | 聚合SDK广告变现平台-上海神蓍信息科技有限公司 一、优量汇优势&#xff1a; &#xff08;1&#xff09;快速变现&#xff0c;节省对接时间 1、快速变现&#xff0c;节省接…

router路由跳转的两种模板

<router-link><router-link/> <router-view><router-view/> link &#xff1a;链接&#xff0c;联系 view&#xff1a;指看见展现在人们面前的、可以稳定地进行详细审视的事物 将语境拉回到router里&#xff0c;抽象概括一下 router-link就是一个…

Git命令窗口:创建一个.bashrc文件,别名实现git log (代替冗余的指令)查询提交修改日志功能

在我们的用户下创建一个.bashrc文件&#xff0c;然后添加如下代码。即可实现我们命令窗口由于每次想要看到好的效果而输入几条指令的问题。 这里我们就只需要使用 git-log 代替我们的git log。这样在命令窗口看到的效果就清晰明了。

MySQL进阶45讲【12】为什么你的MySQL偶尔会卡一下

1 前言 平时的工作中&#xff0c;不知道大家有没有遇到过这样的场景&#xff0c;一条SQL语句&#xff0c;正常执行的时候特别快&#xff0c;但是有时也不知道怎么回事&#xff0c;它就会变得特别慢&#xff0c;并且这样的场景很难复现&#xff0c;它不只随机&#xff0c;而且持…

Spring Web Header 解析常见错误

在上一章&#xff0c;我们梳理了 URL 相关错误。实际上&#xff0c;对于一个 HTTP 请求而言&#xff0c;URL 固然重要&#xff0c;但是为了便于用户使用&#xff0c;URL 的长度有限&#xff0c;所能携带的信息也因此受到了制约。 如果想提供更多的信息&#xff0c;Header 往往…

树莓派-Ubuntu22.04

树莓派 1 安装Ubuntu系统2 ssh登录3 配置3.1 安装软件3.2 换源3.3 安装桌面3.4 开机脚本 1 安装Ubuntu系统 通过制作sdk&#xff0c;使系统在sdk中运行&#xff1a; 下载制作软件&#xff1a;https://www.raspberrypi.com/software/ 下载Ubuntu镜像&#xff1a;https://cn.ub…

PMP证书的价值对哪些人更有用

在软考和PMP的对比中&#xff0c;许多网友认为软考证书比PMP证书更有含金量&#xff0c;大部分人是从持有证书后获得的实质便利来看的。虽然PMP证书在落户、退税等方面不及软考证书&#xff0c;但也有自身独有的价值。 一&#xff0c;PMP证书作用一览 PMP证书不限制行业、覆盖…

简单的TcpServer(英译中)

目录 一、TCP socket API 详解1.1 socket()1.2 bind()1.3 listen()1.4 accept()1.5 connect 二、TcpServer&#xff08;英译中&#xff09;2.1 TcpServer.hpp2.2 TcpClient.cc2.3 Task.hpp2.4 Thread.hpp2.5 ThreadPool.hpp2.6 makefile2.7 Main.cc2.8 log.hpp2.9 Init.hpp2.10…

Vue - 快速入门(一)

阅读文章可以收获&#xff1a; 1. 明白什么是vue 2. 如何创建一个vue实例 3. vue中的插值表达式如何使用 4. 如何安装vue的开发者工具 Vue 概念 什么是vue&#xff1f; Vue 是一个用于 构建用户界面 的 渐进式 框架 框架优点&#xff1a;大大提升开发效率 (70%↑) 缺点…

Spring Boot3,启动时间缩短 10 倍!

前面松哥写了一篇文章和大家聊了 Spring6 中引入的新玩意 AOT&#xff08;见Spring Boot3 新玩法&#xff0c;AOT 优化&#xff01;&#xff09;。 文章发出来之后&#xff0c;有小伙伴问松哥有没有做性能比较&#xff0c;老实说&#xff0c;这个给落下了&#xff0c;所以今天…

2024最新版MySQL安装使用指南

2024最新版MySQL安装使用指南 Installation and Usage Guide to the Latest Oracle MySQL in 2024 By JacksonML 1. MySQL简介 MySQL是世界上最受欢迎的开源数据库之一。MySQL属于Oracle&#xff08;甲骨文&#xff09;公司的产品&#xff0c;其具有强大的功能&#xff0c;但…

Vue-53、Vue技术vuex使用

vuex 是什么 1、概念 专门在Vue 中实现集中式状态&#xff08;数据&#xff09;管理的一个Vue 插件&#xff0c;对vue 应用中多个组件的共享状态进行集中式的 管理&#xff08;读/写&#xff09;&#xff0c;也是一种组件间通信的方式&#xff0c;且适用于任意组件间通信。2、…

《动手学深度学习(PyTorch版)》笔记7.5

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

rclone基础命令解析及实战

rclone命令解析及实战 1 rclone介绍&#xff1a;远程同步工具 rclone是一个开源的远程数据同步工具&#xff0c;由Golang编写&#xff0c;旨在在不同平台的文件系统和多种类型的对象存储产品之间提供数据同步功能。 它支持超过 40 种不同的云存储服务&#xff0c;包括 Amazon S…

常用Hallmark及KEGG、GO基因查询

文献&#xff1a;The Molecular Signatures Database (MSigDB) hallmark gene set collection - PMC (nih.gov) GSEA | MSigDB | Browse Human Gene Sets (gsea-msigdb.org)通过msigdb数据库可以查看各个Hallmark、KEGG、GO具体包含的基因细节。 Hallmark nameProcess categor…

C# Socket通信从入门到精通(21)——Tcp客户端判断与服务器断开连接的三种方法以及C#代码实现

前言 我们开发的tcp客户端程序在连接服务器以后,经常会遇到服务器已经关闭但是作为客户端的我们不知道,这时候应该应该有一个机制我们可以实时监测客户端和服务器已经断开连接,如果已经断开了连接,我们应该及时报警提示用户客户端和服务器已经断开连接,本文介绍三种可以监…

DAY12之滑动窗口最大值

今天内容有点超乎我的能力 直接放卡哥的讲解了 239. 滑动窗口最大值 - 力扣&#xff08;LeetCode&#xff09; 先看超时的暴力解法 class Solution { public:vector<int> maxSlidingWindow(vector<int>& nums, int k) { vector<int>result; for(int …

新手养猫怎么挑选宠物空气净化器?猫用空气净化器测评推荐!

对于养猫的朋友来说&#xff0c;猫咪掉毛绝对是一个令人头痛的问题。猫毛和皮屑在室内飘散&#xff0c;不仅遍布各个角落&#xff0c;而且清理起来也相当费劲。尤其是那些顽固的猫毛&#xff0c;更是令人烦恼。更糟糕的是&#xff0c;这些毛发可能引起人体过敏反应&#xff0c;…

6.s081 学习实验记录(五)traps

文章目录 一、RISC-V assembly简介问题 二、Backtrace简介注意实验代码实验结果 三、Alarm简介注意实验代码实验结果 一、RISC-V assembly 简介 git checkout traps&#xff0c;切换到traps分支user/call.c 文件在我们输入 make fs.img 之后会被汇编为 call.asm 文件&#xf…