文章目录

  • 前言
  • 一、基本数据类型
  • 1.整型
  • 2.浮点型
  • 3.字符型
  • 4.boolean 型
  • 二、运算符(operator)
  • 2.算术运算符
  • 3.赋值及其扩展赋值运算符
  • 4关系运算符
  • 5.逻辑运算符
  • 6.位运算符
  • 7.字符串连接符
  • 8.条件运算符
  • 总结



前言

Java 是一种强类型语言,每个变量都必须声明其数据类型。
Java 的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java 也提供了一套丰富的运算符来操作变量。
本节将介绍java的数据类型以及一些常用运算符。


一、基本数据类型

Java 中定义了 3 类 8 种基本数据类型
数值型- byte、 short、int、 long、float、 double
字符型- char
布尔型-boolean

java怎么定义类方法有哪些内容 java定义类型_经验分享

1.整型

整型用于表示没有小数部分的数值,它允许是负数。整型的范围与运行 Java 代码的机 器无关,这正是 Java 程序具有很强移植能力的原因之一。与此相反,C 和 C++程序需要针 对不同的处理器选择最有效的整型。

表 1-1 整型数据类型

类型

占用存储空间

表数范围

byte

1 字节

-2^7 ~ 2^7-1(-128~127)

short

2 字节

-2^15 ~ 2^15-1 (-32768~32767)

int

4 字节

-2^31 ~ 2^31-1 (-2147483648~2147483647) 约 21 亿

long

8字节

-2^63 ~ 2^63-1

Java 语言整型常量的四种表示形式 :
十进制整数,如:99, -500, 0 
八进制整数,要求以 0 开头,如:015 
十六进制数,要求 0x 或 0X 开头,如:0x15 
二进制数,要求 0b 或 0B 开头,如:0b01110011

提示:Java 语言的整型常数默认为 int 型,声明 long 型常量可以后加‘ l ’或‘ L ’ 代码如下(示例1):long 类型常数的写法及变量的声明

long a = 55555555; //编译成功,在 int 表示的范围内(21 亿内)。 
long b = 55555555555;//不加 L 编译错误,已经超过 int 表示的范围。
//报错:The literal 55555555555 of type int is out of range,所以我们需要修改代码 为:
long b = 55555555555L;

2.浮点型

带小数的数据在 Java 中称为浮点型。浮点型可分为 float 类型和 double 类型。

表 1-2 浮点型数据类型

类型

占用存储空间

表数范围

float

4字节

-3.403E38~3.403E38

double

8字节

-1.798E308~1.798E308

float 类型又被称作单精度类型,尾数可以精确到 7 位有效数字,在很多情况下,float 类型的精度很难满足需求。而 double 表示这种类型的数值精度约是 float 类型的两倍,又 被称作双精度类型,绝大部分应用程序都采用 double 类型。

Java 浮点类型常量有两种表示形式 
十进制数形式,例如:3.14	 	314.0 		0.314 
科学记数法形式,如 3.14e0 		3.14E2 		3.14E-1

代码如下(示例2):使用科学记数法给浮点型变量赋值

double f = 314e2; //314*10^2-->31400.0 
double f2 = 314e-2; //314*10^(-2)-->3.14

float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
代码如下(示例3):float 类型常量的写法及变量的声明

float f = 3.14F;//float 类型赋值时需要添加后缀 F/f 
double d1= 3.14; 
double d2 = 3.14D;

代码如下(示例4):浮点型数据的比较一

float f = 0.1f;
double d = 1.0/10; 
System.out.println(f==d);//结果为 false

代码如下(示例5):浮点型数据的比较二

float d1 = 423432423f; 
float d2 = d1+1; 
if(d1==d2){ 
	System.out.println("d1==d2");//输出结果为 d1==d2 
}else{	
	System.out.println("d1!=d2"); 
}

运行以上两个示例,发现示例2-13的结果是“false”,而示例2-14的输出结果是“d1==d2”。 这是因为由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近,但不等于。二 进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。并不是所有的小数都能可 以精确的用二进制浮点数表示。
java.math 包下面的两个有用的类:BigInteger 和 BigDecimal,这两个类可以处理任意长度的数值。BigInteger 实现了任意精度的整数运算。BigDecimal 实现了任意精度的浮点运算。

代码如下(示例6):使用 BigDecimal 进行浮点型数据的比较

import java.math.BigDecimal;

public class Main { 
	public static void main(String[ ] args) { 
		BigDecimal bd = BigDecimal.valueOf(1.0); 
		bd = bd.subtract(BigDecimal.valueOf(0.1)); 
		bd = bd.subtract(BigDecimal.valueOf(0.1)); 
		bd = bd.subtract(BigDecimal.valueOf(0.1));
		bd = bd.subtract(BigDecimal.valueOf(0.1)); 
		bd = bd.subtract(BigDecimal.valueOf(0.1)); 
		System.out.println(bd);//0.5 
		System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);//0.5000000000000001 
	} 
}
浮点数使用总结 
 1.默认是 double 类型 
 2.浮点数存在舍入误差,数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用 BigDecimal 类。 
 3.避免比较中使用浮点数,需要比较请使用 BigDecimal 类

3.字符型

字符型在内存中占 2 个字节,在 Java 中使用单引号来表示字符常量。例如’A’是一个字符,它与”A”是不同的,”A”表示含有一个字符的字符串。
char 类型用来表示在 Unicode 编码表中的字符。Unicode 编码被设计用来处理各种 语言的文字,它占 2 个字节,可允许有 65536 个字符。
Unicode 具有从 0 到 65535 之间的编码,他们通常用从’\u0000’到’\uFFFF’之间的十六进制值来表示(前缀为 u 表示 Unicode)
Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义。常用的转义字符及其含义和 Unicode 值如表 1-3 所示。

表 1-3 转义字符

转义符

含义

Unicode值

\b

退格(backspace)

\u0008

\n

换行

\u000a

\r

回车

\u000d

\t

制表符(tab)

\u0009

\“

双引号

\u0022

\’

单引号

\u0027

\\

反斜杠

\u005c

代码如下(示例7):字符型演示

char eChar = 'a';
char cChar ='中';

char c = '\u0061';//字符型的十六进制值表示方法

char c2 = '\n'; //代表换行符

4.boolean 型

boolean 类型有两个常量值,true 和 false,在内存中占一个字节或 4 个字节,不可以 使用 0 或非 0 的整数替代 true 和 false ,这点和 C 语言不同。boolean 类型用来判断 逻辑条件,一般用于程序流程控制。
代码如下(示例7):boolean 类型演示

boolean flag ; 
flag = true; //或者 flag=false; 
if(flag) { 
	// true 分支 
} else { 
	// false 分支 
}

二、运算符(operator)

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java 也提供了一套 丰富的运算符来操作变量。

表 1-4 运算符分类

算术运算符

二元运算符

+,-,*,/,%

一元运算符

++,--

赋值运算符

=

扩展运算符

+=,-=,*=,/=

关系运算符

>,<,>=,<=,==,!= instanceof

逻辑运算符

&&,||,!,^

位运算符

&,|,^,~ , >>,<<,>>>

条件运算符

? :

字符串连接符

+

2.算术运算符

算术运算符中+,-,*,/,%属于二元运算符,二元运算符指的是需要两个操作数才能 完成运算的运算符。其中的%是取模运算符,就是我们常说的求余数操作。 二元运算符的运算规则:
整数运算:
1.如果两个操作数有一个为 long, 则结果也为 long。
2.没有 long 时,结果为 int。即使操作数全为 short,byte,结果也是 int。
浮点运算:
1.如果两个操作数有一个为 double,则结果为 double。
2.只有两个操作数都是 float,则结果才为 float。
取模运算:
其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左 边操作数相同,如:7%3=1,-7%3=-1,7%-3=1。

算术运算符中++(自增),–(自减)属于一元运算符,该类运算符只需要一个操作数。

代码如下(示例7):一元运算符++与- -

/**
 * 测试算数运算符的用法
 * @Author smallwhite
 * @createDate: 2022/5/18
 */
public class TestOperator01 {
    public static void main(String[] args){
        //自增、自减
        int j = 10;
        int k = j++;//先赋值,后自增
        j = 10;
        int m = ++j;//先自增,后赋值
        //j--同理
        System.out.println (k);//因为是先赋值,后自增,所以k的值为10
        System.out.println (m);//因为是先自增,后赋值,所以m的值为11
    }
}

运行该程序,执行结果如图2所示。

java怎么定义类方法有哪些内容 java定义类型_运算符_02

3.赋值及其扩展赋值运算符

表 1-5赋值及其扩展运算符

运算符

用法举例

等效表达式

+=

a += b

a = a+b

-=

a -= b

a = a-b

*=

a *= b

a = a*b

/=

a /= b

a = a/b

%=

a %= b

a = a%b

代码如下(示例8):扩展运算符

/**
 * 测试算数运算符的用法
 * @Author smallwhite
 * @createDate: 2022/5/18
 */
public class TestOperator01 {
    public static void main(String[] args){
        int a=3; 
        int b=4; 
        a+=b;//相当于a=a+b; 
        System.out.println("a="+a+"\nb="+b); 
        a=3; 
        a*=b+3;//相当于a=a*(b+3) 
        System.out.println("a="+a+"\nb="+b);
    }
}

运行该程序,执行结果如图3所示。

java怎么定义类方法有哪些内容 java定义类型_java怎么定义类方法有哪些内容_03

4关系运算符

关系运算符用来进行比较运算,如表1-6所示。关系运算的结果是布尔值:true/false;

表 1-6 关系运算符

运算符

含义

示例

==

等于

a == b

!=

不等于

a != b

<

小于

a < b

>

大于

a > b

<=

小于或等于

a <= b

>=

大于或等于

a >= b

注意事项 
	1. =是赋值运算符,而真正的判断两个操作数是否相等的运算符是==。 
	2. ==、!= 是所有(基本和引用)数据类型都可以使用。 
	3. > 、>=、<、<= 仅针对数值类型(byte/short/int/long,float/double 以及 char)。

代码如下(示例9):关系运算符

/**
 * 测试关系运算符的用法
 * @Author smallwhite
 * @createDate: 2022/5/18
 */
public class TestOperator03 {
    public static void main(String[] args){
        int a = 3;
        int b = 4;
        boolean c = a >= b;
        System.out.println(c);

        char d = 'j';//char的值在0-65536之间可以通过int强制转换成数字
        System.out.println( (int)d );
        boolean e = d>=100;
        System.out.println(e);
    }
}

运行该程序,执行结果如图4所示。

java怎么定义类方法有哪些内容 java定义类型_经验分享_04

5.逻辑运算符

Java 中的逻辑运算符如表 1-7 所示。逻辑运算的操作数和运算结果都是 boolean 值

表 1-6 关系运算符

运算符

说明

逻辑与

&(与)

两个操作数为 true,结果才是 true,否则是 false

逻辑或

|(或)

两个操作数有一个是 true,结果就是 true

短路与

&&(与)

只要有一个为 false,则直接返回 false

短路或

||(或)

只要有一个为 true, 则直接返回 true

逻辑非

!(非)

取反:!false 为 true,!true 为 false

逻辑异或

^(异或)

相同为 false,不同为 true

短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能 够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。

代码如下(示例10):短路与和逻辑与

/**
 * 测试逻辑运算符的用法
 * @Author smallwhite
 * @createDate: 2022/5/18
 */
public class TestOperator04 {
    public static void main(String[] args){
        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b1&b2);//与:有一个false,结果就是false
        System.out.println(b1|b2);//或:有一个true,结果就是true
        System.out.println(!b2);//非:取反
        System.out.println(b1^b2);//异或:相同true,不同false

        //短路与、短路或
        //int b3 = 3/0;//会报不能除以0的异常
        boolean b3 = 1>2&&(4<3/0);
        System.out.println (b3);

        boolean b4 = 2>1||(4<3/0);
        System.out.println (b4);

    }
}

运行该程序,执行结果如图5所示。

java怎么定义类方法有哪些内容 java定义类型_java怎么定义类方法有哪些内容_05

6.位运算符

位运算指的是进行二进制位的运算,常用的位运算符如表1-8 所示。

表 1-8 位运算符

位运算符

说明

~

取反

&

按位与

|

按位或

^

按位异或

<<

左移运算符,左移 1 位相当于乘 2

>>/td>

右移运算符,右移 1 位相当于除 2 取商

代码如下(示例11):左移运算和右移运算

int a = 3*2*2; 
int b = 3<<2; //相当于:3*2*2; 
int c = 12/2/2; 
int d = 12>>2; //相当于 12/2/2;
新手雷区 
1.&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是 boolean 类型,
就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符。
2.不要把“^”当做数学运算“乘方”,是“位的异或”操作。

7.字符串连接符

“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个 操作数转换为字符串然后再进行连接。
代码如下(示例11):连接符“+”

int a=12;
 System.out.println("a="+a);//输出结果: a=12

8.条件运算符

语法格式: x ? y : z

其中 x 为 boolean 类型表达式,先计算 x 的值,若为 true,则整个运算的结果为 表达式 y 的值,否则整个运算结果为表达式 z 的值。

代码如下(示例12):条件运算符

/**
 * 测试条件运算符*
 * @Author smallwhite
 * @createDate: 2022/5/18
 */
public class TestOperator06 {
    public static void main(String[] args){
        int score = 90;
        String a = score<60?"不及格":"及格";
        System.out.println(a);

        /*if(score<60){
            a = "不及格";
   9     }else{
            a = "及格";
        }*/
        //作用与(score<60?"不及格":"及格")一样

        int x = -100;
        int flag = x > 0 ? 1 : (x == 0 ? 0:-1);
        System.out.println (flag);//结果:-1

    }
}

运行该程序,执行结果如图所示。

java怎么定义类方法有哪些内容 java定义类型_java_06

总结

以上就是今天要讲的内容,本文简单介绍了java的八种基本数据类型的使用和运算符的基本用法,希望对大家的java学习有所帮助。