IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java的数据类型与运算符 -> 正文阅读

[Java知识库]Java的数据类型与运算符

目录

一、用IDEA写Java程序

?二、Java中数据类型

布尔类型变量

字符串类型变量

final 关键字修饰的常量

三、 理解类型转换

?四、理解数值提升

?int和long的混合运算

byte 和 byte 的运算

五、Java中的运算符

1.算术运算符

2.关系运算符

3.逻辑运算符

逻辑与 ——&&

逻辑或? ——||

逻辑非 !

短路求值

4.位运算符

按位与 &:

按位或 |:

按位取反 ~:

按位异或 ^:

5.移位运算

6.运算符优先级


一、用IDEA写Java程序

上一节我们简单认识了Java的main函数,并了解了用记事本如何书写简单的Java程序。

但是用记事本写只是方便我们了解Java程序编译运行的原理,我们真正还是要选择合适的编译工具。

这节我们选择用最常用的工具——IDEA来写Java程序。

(用之前记得先配置好相应的环境)

IntelliJ IDEA的下载的地址:IDEA官网

1.进入主页面点击左上角:file>new>project

?2.取合适的项目名称,选好路径

?3.选择 src>New>Java Class?

?4.取一个合法的类名 回车即可开始写Java程序?

?

5.编写Java程序。

?6.最后只要点代码左边绿色的开始键 或者 单击鼠标右键选择run行即可运行。

?

?二、Java中数据类型

Java中基本数据类型细分为:

?

(这个水印挡住字了,不过话说还不知道怎么去水印QAQ)

回归正题,上节说到布尔类型变量——

布尔类型变量

基本语法格式:

boolean 变量名 = 初始值;

代码示例:

boolean value = true;

System.out.println(value);

注:1.boolean 类型的变量只有两种取值,true 表示真, false 表示假。

2. Java 的 boolean 类型和 int 不能相互转换,不存在 1 表示 true, 0 表示 false 这样的用法

3. boolean 类型有些 JVM 的实现是占 1 个字节,有些是占 1 个比特位,这个没有明确规定

字符串类型变量

?基本语法格式:

String 变量名 = "初始值";

代码示例:

String name = "zhangsan";

System.out.println(name);

注:1.和上面的类型不同, String 不是基本类型, 而是引用类型。

2.字符串中的一些特定的不太方便直接表示的字符需要进行转义。

1、 字符串的 + 操作, 表示字符串拼接:(注意:俩字符串拼接,打印结果中间没有空格)

public class testdemo {
    public static void main(String[] args) {
        String a = "hello";
        String b = "world";
        String c = a + b;//打印结果为helloworld  中间无空格
        System.out.println(c);
    }
}

2、字符串和整数进行拼接:

public class testdemo {
    public static void main(String[] args) {
        String str = "result = ";
        int a = 10;
        int b = 20;
        String result = str + a + b;
        System.out.println(result);// 执行结果:result = 1020
    }
}

?归纳:当Java在输出时,先碰到 "字符串"+ 的时候,就会默认后面都执行字符串拼接操作;如果第一个不是字符串,则先执行正常的运算。

【例如上述代码改成:System.out.println(a+b+str),则输出“30result=”】

final 关键字修饰的常量

一旦被final修饰,则在程序运行的过程中,不能再次被修改。即在程序编译时,就已经确定其值了。

(而变量,则是在程序运行过程中才能知道里面的是几)

?

三、 理解类型转换

Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有严格的校验。

先看一个例子:

?结论: 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 反之则不行。

类比理解一下:假如有水杯1、水杯2。

?水杯1的容量大于水杯2。

则将水杯2的水倒入水杯1是保证能被装下的,(即绝对不会超出范围,不会报错),而水杯1的水倒入水杯2则不一定能被完全装下。

?结论:

1. 强制类型转换可能会导致精度丢失。如刚才的例子中,赋值之后,?10.5 就变成 10 了,小数点后面的部分被忽略。

2. 强制类型转换不是一定能成功,互不相干的类型之间无法强转。(例如布尔值与整型之间不能转换,这与C语言有很大区别,Java中的布尔值只有true和false,没有1或0的表示形式)

?四、理解数值提升

?int和long的混合运算

?

?结论:

当 int 和 long 混合运算的时候int 会自动提升成 long,得到的结果仍然是 long 类型,需要使用 long 类型的变量来接收结果。如果非要用 int 来接收结果,?就需要使用强制类型转换。

byte 和 byte 的运算

?

结论:byte和byte都是相同类型,但是居然出现编译报错。虽然a和b都是byte,但是计算a+b会先将a和b都提升成int,再进行计算,得到的结果也是int,这是赋给c,就会出现上述错误。

由于计算机的CPU通常是按照4个字节为单位从内存中读写数据。如byte和short这种低于4个字节的类型,会先提升成int,再参与计算。

正确的写法:(要用强制类型转换)

byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
System.out.println(c); 

五、Java中的运算符

1.算术运算符

  1. 基本四则运算符 +? ? ? -? ? ?*? ? ?/? ? ?%
  2. 增量赋值运算符 +=? ? -=? ?*=? ?/=? ?%=
  3. 自增/自减运算符 ++? ?--

需要额外注意的是,

  • 除法中 int/int结果还是int,无论你是否用double接收。
  • int a = 1;
    int b = 2;
    System.out.println(a / b); // 结果为 0
  • 0不能作为除数。
  • % 表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模。

2.关系运算符

关系运算符主要有六个: ==? ? !=? ? <? ? >? ? <=? ?>=

注意:关系运算符的表达式返回值都是:boolean 类型

3.逻辑运算符

逻辑运算符主要有三个:?&&? ? ||? ? !

逻辑与 ——&&

规则: 两个操作数都为 true, 结果为 true, 否则结果为 false。

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);//输出为true

逻辑或? ——||

规则: 两个操作数都为 false, 结果为 false, 否则结果为 true。

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b < c); //输出为true

逻辑非 !

规则: 操作数为 true, 结果为 false; 操作数为 false, 结果为 true。(注:这是个单目运算符,仅有一个操作数)

短路求值

&& 和 || 遵守短路求值的规则。

System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true

由上面例子能看出,要是计算到右侧表达式,则一定会报错,可是结果却没有报错,说明压根没有执行到右侧的表达式就已经得出结果了。

结论:

1. 对于&&,如果左侧表达式值为false,则表达式的整体的值一定是false,无需计算右侧表达式。

2.对于||,如果左侧表达式值为 true,则表达式的整体的值一定是true,无需计算右侧表达式

4.位运算符

位运算符主要有四个:&? ? ?|? ? ?~? ? ?^

按位与 &:

如果两个二进制位都是 1, 则结果为 1, 否则结果为 0。

int a = 10;
int b = 20;
System.out.println(a & b); 

进行按位运算, 需要先把 10 和 20 转成二进制, 分别为 1010 和 10100,再进行对应位的比对,最后转为十进制输出。

按位或 |:

如果两个二进制位都是 0,则结果为 0,否则结果为 1。

(运算方式同上)

注意:当 & 和 | 的操作数为整数(int, short, long, byte) 的时候,表示按位运算,当操作数为 boolean 的时候,表示逻辑运算。

按位取反 ~:

如果该位为0,则转为 1,如果该位为 1,则转为 0。

int a = 0xf;
System.out.printf("%x\n", ~a);

注意:

0x前缀的数字为十六进制数字。十六进制可以看成是二进制的简化表示方式。一个十六进制数字对应4个二进制位。0xf 表示十进制的15, 也就是二进制的1111。

按位异或 ^:

如果两个数字的二进制位相同,则结果为0,相异则结果为1。

5.移位运算

移位运算符有三个:<<? ? ? ? >>? ? ? ? >>>

左移 <<:最左侧位不要了,最右侧补0。

右移 >>:最右侧位不要了,最左侧补符号位(正数补0, 负数补1)。

无符号右移 >>>:最右侧位不要了,最左侧补0。

结论:

1. 左移 1 位, 相当于原数字 * 2 ;左移 N 位, 相当于原数字 * 2 的N次方。

2. 右移 1 位, 相当于原数字 / 2 ;右移 N 位, 相当于原数字 / 2 的N次方。

3.由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替

6.运算符优先级

如下表所示。可以稍微记忆一点,一般写程序直接要先的打上括号即可,优先级一般只有部分考试题目会用到。

?to be continue →

欢迎大家互相探讨交流补充 欢迎捉虫!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:20:41  更:2021-10-23 12:21:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/23 22:21:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码