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,线程不安全,但是速度快。

目录
相关文章
|
1月前
|
Java
JAVA运算符
JAVA运算符
15 3
|
12天前
|
存储 Java
Java中的基本数据类型有哪些?它们的大小和取值范围是多少?
Java基础数据类型:4种整型(byte[-128,127],short[-32,768,32,767]),2种浮点(float,double),1种字符(char,Unicode),1种布尔(true,false)。
17 0
|
1月前
|
Java
JAVA基本数据类型输入输出流
JAVA基本数据类型输入输出流
16 0
|
14天前
|
Java
Java 运算符
4月更文挑战第8天
|
1天前
|
Java 开发者
Java基础知识整理,注释、关键字、运算符
在日常的工作中,总会遇到很多大段的代码,逻辑复杂,看得人云山雾绕,这时候若能言简意赅的加上注释,会让阅读者豁然开朗,这就是注释的魅力!
34 11
|
16天前
|
Java
Java_运算符
该文档介绍了编程中的几种运算符。算术运算符包括加、减、乘、除和取余
15 1
|
1月前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
92 3
|
1月前
|
Java
Java运算符
Java运算符
7 0
|
1月前
|
存储 Java
Java基本数据类型
Java基本数据类型
7 0
|
1月前
|
存储 缓存 Java
JAVA基本数据类型的包装类
JAVA基本数据类型的包装类
13 0