Java基本数据类型与运算符

简介: 一、基本数据类型java是强类型语言,共有8种基本数据类型:4种整型、2种浮点型、char字符型和boolean型。整型类型 长度 取值范围byte 1字节 -128~127short 2字节 -32768-32767int 4字节 -2^31-1~2^31-1long 8字节 -2^63-1~2^63-1整型的范围与运行java代码的机器无关,这一点和C、C++不同,保证了代码在不同的平台之间的可移植型。

一、基本数据类型

java是强类型语言,共有8种基本数据类型:4种整型、2种浮点型、char字符型和boolean型。

整型

类型 长度 取值范围
byte 1字节 -128~127
short 2字节 -32768-32767
int 4字节 -2^31-1~2^31-1
long 8字节 -2^63-1~2^63-1

整型的范围与运行java代码的机器无关,这一点和C、C++不同,保证了代码在不同的平台之间的可移植型。
int最为常用,char和short主要用于特定场合,比如底层处理文件、处理需要占用大量存储空间的数组。要表示的数据超过int类型的范围时使用长整型int.

浮点类型

浮点类型用于表示java中的有小数部分的数值。

类型 长度 取值范围
float 4字节 大约±3.402 823 47E+38F(有效位为6~7位)
double 8字节 大约±1.79769313486231570E+308(有效位为15位)

float精度很难满足需求,一般使用double类型.

char类型

char类型用来表示单个字符,比如’A’.”A”表示长度为1包含一个字符A的字符串。

boolean

boolean类型有2个值:true和false,布尔类型不能和整型值进行相互转换。


变量

变量命名规则:以大小写字母、下划线、开始,后面跟字母或数字。java中的字母范围包括’a-z’、’A-Z’、下划线(_)、美元符等。不能讲java关键字设置为变量名。

常量

java中使用final关键字指示常量:

final double HEIGHT = 100;

final关键字表示变量只能被赋值一次, 一旦被赋值以后就不可以被修改。

类常量

类常量可以被一个类中的多个方法使用,使用关键字static final修饰,类常量定义在main函数的外部。如果使用public static final,即一个类常量被声明为public,那么其他类多方法也可以使用这个常量。

数学函数与常量

Math类包含了多种数学函数。

函数 功能
abs(a) 求绝对值
sqrt(a) 求根
pow(a,b) a的b次方
max(a,b) 返回两个数中最大值
min(a,b) 返回两个数中最小值
floor(a) 向下取整
round(b) 向上取整
sin() 正弦
cos() 余弦
tan() 正切
atan() 余切

二、元算符

算术运算符

java中使用+、-、*、/ 表示加、减、乘、除四种运算,%表示求余操作。当参与/运算的两个数都是整数时表示整数除法,否则表示浮点除法。15/7=2,15%2=1,15/2.0=7.5.
简化的二元算术运算符号:

  1. +=
    x+=4,等价于x=x+4
  2. -=
    x-=4等价于x=x-4
  3. *=
    x*=2等价于x=x*2
  4. /=
    x/=2等价于x=x/2

自增、自减运算符

前缀形式自增:++n
后缀形式自增:n++

int a=6;
int b=6;
int m=++a //m=7,a=7
int n=b++ // n=b,b=7

前缀形式运算时n先加1后运算,后缀形式运算时n先运算后加1.

关系运算符

运算符 功能
== 检测等号两边值是否相等
!= 检测等号两边值是否不相等
> 大于
< 小于
>= 大于等于
<= 小于等于

逻辑运算符

&&表示逻辑与,A&&B当且仅当A和B都为真是A&&B为真,A||B只要A或B有一个为真时A||B为真.&&与||按照短路方式求值,如果第一个操作数已经可以确定表达式的结果,就不再计算第二个操作数。

x!=0 && 1/x>x+y

位运算符

四种位运算符:

  • & 与
    以29为例,29的二进制表示为(11101),16 的二进制表示为(10000),与运算后29&16的结果为16(1 0000)
  System.out.println(29&16);  //16
  • | 或
  • ^ 异或
  • ~ 非
  • << 左移
    左移和十进制小数点移动类似,小数点左移一位放大10倍,在计算机中左移一位扩大2倍。左移n位扩大2的n次方倍.
  • >> 右移
    右移与左移正好相反。
int a=16;
System.out.println(a>>2); //a=4
System.out.println(a<<2); //a=64

字符串

字符串不是java基本的数据类型,而是java标准库中的一个String类,每个用双引号引起来的字符串就是String类的一个实例。如:String name="Tonny"

1.字符串的构造

第一种方式:

String name="Tonny"

第二种方式:

String name=new String("Tonny");

第三种方式:

 byte[] arr = {65, 66, 67, 68};
 String s = new String(arr); //s=ABCD

第四种方式:

byte[] arr = {65, 66, 67, 68,69};
String s = new String(arr, 1, 4); //s=BCDE

2.子串

使用substring可以从一个较大的字符串中提取一个子串。比如:

 String greeting="HelloWorld!";
 System.out.println(greeting.substring(2));//llo World!
 System.out.println(greeting.subSequence(2, 6));//lloW 

substring() 接受一个参数时,参数为子串开始位置,字符串从0开始计算位置。
substring()接收2个参数时分别为开始位置和结束位置,截取的字符串包含开始位置不包含结束位置。

3.拼接

使用”+”可以拼接2个字符串。例如;

 String str1="Hello";
 String str2="World!";
 String str3=str1+str2;
 System.out.println(str3);//HelloWorld

一个字符串和和一个非字符串进行拼接时,后者被转换为字符串类型。在java中任何一个字符串对象都可以转换为字符串。

4. 不可变字符

java中没有修改字符串的方法,java使用拼接再赋值的方式来实现字符串的修改。原来的字符串仍然存在,只是变量指向了新的字符串而已。hello永远是包含h、e、l、l、o的代码单元序列。

5.检查字符串是否相等

这个问题经常出现在各种笔试、面试题中。字符串的equals方法用来检查2个字符串的值是否相等,==比较的是2个字符串的地址是否相同,即是否指向的是同一个字符串。使用substring、+截取或者拼接的字符串虽然内容一样,但是地址不一样。

 String a="ucas";
 String b=a.substring(0,3)+"s";
 System.out.println("ucas".equals(a));//true
 System.out.println(a.equals(b)); //true
 System.out.println(a==b);  //false

6.空串与Null串

空串是一个String 对象,内容为空,长度为0。null表示没有对象和它关联。判断一个字符串对象是不是为空串:

if(str.length==0)
或者
if(str.equals(""))

检查一个对象既不为null也不为空:

if(str!=null&&str.length!=0)

7.字符串Api

  • boolean endwith()判断字符串后缀
  • equalIgnoreCase()忽略大小写比较
  • int indexOf() 子串首次出现位置
  • int lastIndexOf() 返回字符串最后一次出现位置
  • int length() 返回字符串长度
  • boolean startWith(prefix)判断字符串是否以prefix开头
  • String toLowerCase 转为小写
  • String toUpperCase 转为大写
  • String trim()删除尾部空格

8.字符串的本质

地址比较:
字符串”abc”在常量池中,s1和s2指向的是同一个对象,因此不论是比较地址还是比较值结果都是一样的。

  String s1 = "abc";
  String s2 = "abc";
  System.out.println(s1 == s2);  //true
  System.out.println(s1.equals(s2));  //true

再看下面的例子:

   String s1 = "abc";
   String s2 = new String("abc");
   System.out.println(s1 == s2);        //false
   System.out.println(s1.equals(s2));   //true

这时,s1指向的是字符串常量池中的”abc”,s2是字符串对象,位于堆内存中,因此s1和s2的地址不一样,不是同一个对象,字符串值一样。

9 字符串切分

 String str1 = "abc,def,hig";
 String[] strArr = str1.split(",");
 for(String str:strArr){
    System.out.println(str);
 }

打印结果:

abc
def
hig

特殊的字符需要转义,比如,.本身是正则表达式中的占位符,使用\转成英文实心句号:

String str1 = "abc.def.hig";
String[] strArr = str1.split("\\.");

10.字符串转字符数组

 String s = "ab你好";
 char[] cArr = s.toCharArray();
 for (char c : cArr) {
     System.out.println(c);
 }

打印结果:

a
b
你
好

11.字符串按字典顺序排序

使用TreeSet:

String[] strArr = {"recursive", "raw", "platform", "rank", "register", "symbol"};

TreeSet treeSet = new TreeSet<>();

for (String str : strArr) {
    treeSet.add(str);
}

System.out.println(treeSet);

12.按字典顺序逆序排序

逆序排序只需要在TreeSet实现Comparator接口,重写compare()方法:

String[] strArr = {"recursive", "raw", "platform", "rank", "register", "symbol"};

TreeSet treeSet = new TreeSet<>(new Comparator() {
   @Override
   public int compare(Object o1, Object o2) {
     return o2.toString().compareTo(o1.toString());
            }
   });
   for (String str : strArr) {
        treeSet.add(str);
   }
   System.out.println(treeSet);

结果:

[symbol, register, recursive, raw, rank, platform]

13.StringBuffer和StringBuilder

StringBuffer是字符串缓冲区, 线程安全,单线程操作单时候也要不停的判断锁,后来独立出来一个StringBuilder,线程不安全,但是速度快。

目录
相关文章
|
3月前
|
Java
Java运算符
Java运算符
54 12
|
3月前
|
Java
java基础(8)数据类型的分类
Java数据类型分为基本数据类型(8种)和引用数据类型。基本类型包括byte, short, int, long, float, double, boolean, char。每种类型有固定占用空间大小,如int占用4字节。字符编码如ASCII和Unicode用于将文字转换为计算机可识别的二进制形式。
84 2
|
25天前
|
Java
Java基础之数据类型
Java基础之数据类型
20 6
|
26天前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
54 7
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
57 4
|
1月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
38 1
|
2月前
|
算法 Java 测试技术
🌟Java 零基础 | 详解 单目运算符
【10月更文挑战第14天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
51 7
|
2月前
|
Java 测试技术 开发者
🌟Java 零基础 | 深入理解三目运算符
【10月更文挑战第13天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
54 3
|
2月前
|
存储 Java 关系型数据库
[Java]“不同族”基本数据类型间只能“强转”吗?
本文探讨了不同位二进制表示范围的计算方法,重点分析了Java中int和char类型之间的转换规则,以及float与int类型之间的转换特性。通过具体示例说明了显式和隐式转换的条件和限制。
39 0
[Java]“不同族”基本数据类型间只能“强转”吗?
|
2月前
|
Java 测试技术 开发者
🌟Java零基础-Lambda运算符详解 🌟
【10月更文挑战第12天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
26 1
下一篇
DataWorks