目录

1. Java中的基本数据类型

1.1 概述

1.2 基本数据类型的值域

1.2.1 byte类型

1.2.2 short类型

1.2.3 int类型

1.2.4 long类型

1.2.5 float类型

1.2.6 double类型

1.2.7 char类型

1.2.8 boolean类型

1.3 自动类型转换

1.4 强制类型转换

2. Java运算符

2.1 基本运算符

2.1.1 赋值运算符

2.1.2 四则运算符

2.1.3 括号运算符

2.1.4 余数运算符

2.2 布尔运算符

2.2.1 关系运算符

2.2.2 逻辑运算符

2.3 位运算符

3. String类型简介

3.1 使用String类型

3.2 String类型的加法运算

3.3 String类型与基本类型的加法运算

3.4 字符串长度

3.5 字符串遍历

3.6 查找子串

3.7 字符串比较

4. 转义字符


1. Java中的基本数据类型

1.1 概述

① 编程语言直接支持的数据类型就是基本数据类型

② 基本数据类型是编程语言所支持的最底层的数据类型,程序中所有的数据最终都是由基本数据类型构成的

1.2 基本数据类型的值域

值和值域是Java基本数据类型的两个最重要的属性,Java中一共有8种基本数据类型,简介如下,

1.2.1 byte类型

① byte类型用来表示有符号整数

② 占用1B,值域为[-128,127]

1.2.2 short类型

① short类型用来表示有符号整数

② 占用2B,值域为[-32768,32767]

1.2.3 int类型

① int类型用来表示有符号整数

② 占用4B,值域为[-2147483648,2147483647]

③ int类型是Java语言中最常用来表示整型的类型

1.2.4 long类型

① long类型用来表示有符号整数

② 占用8B,值域为[-923372036854775808,923372036854775807]

1.2.5 float类型

① float类型用来近似表示有理数或无理数,在编程语言中称为浮点数

② 值域为[1.4E-45, 3.402823E38]

③ 除了值域,也应该关心float类型的精度

1.2.6 double类型

① double类型也用来表示浮点数

② 与float类型相比,double类型精度更高,范围更大

③ 值域为[4.9E-324,1.7976931348623157E3085]

1.2.7 char类型

① char类型用来表示一个字符,包括英文字符、汉字及其他语言中的字符,所以char类型的值域为所有字符

② Java使用UTF-16编码,所以char类型占用2B

③ char类型为无符号类型,所以表示为数值的值域为[0, 65535]

1.2.8 boolean类型

① boolean类型用来表示逻辑值true和false

② 值域只能是true或false,true和false均为Java中的关键字

③ 占用4B

说明1:数字类型精度

首先浮点数的精度大于整数类型的精度,其次精度是根据他们的值域排列的,在Java中表示数字类型的精度从小到大依次为,

byte < short < int < long < float < double

注意1:char和boolean类型并非表示数字的类型

注意2:数据类型的精度关系到类型转换

说明2:数值常量缺省类型

① 整数常量的缺省类型为int,当超出int类型值域时,需要增加L(或l)后缀

② 浮点数常量的缺省类型为double

说明3:变量名

① Java中的变量名和C/C++相比,除了可以使用字母、数字、下划线,还可以使用$符号

② 与C/C++相同,变量名不能以数字开头

说明4:数据类型的溢出

以int类型为例,超出其值域即会出现溢出

public class Overflow {public static void main(String[] args) {int minValue = Integer.MIN_VALUE;int maxValue = Integer.MAX_VALUE;System.out.println("minValue = " + minValue);System.out.println("maxValue = " + maxValue);// 下溢出minValue -= 1;System.out.println("minValue = " + minValue);// 上溢出maxValue += 1;System.out.println("maxValue = " + maxValue);}
}

从补码的角度很容易理解整型溢出的现象

1.3 自动类型转换

① 自动类型转换不会出现问题,编程语言可以做自动类型转换,比如低精度数字向高精度数字转换

② 自动类型转换可以发生在算数运算,也可以发生在赋值

③ char类型可以自动转换为int类型,但是不能转换为short类型

因为虽然char类型和short类型均为2B,但是char类型是无符号数,值域超出了short类型

说明:运算中的类型转换

在对两个不同类型的变量进行计算时(e.g. int类型变量与double类型变量进行计算),Java会先将低精度的变量转换为高精度的类型,然后对两个同类型的变量进行计算,最后返回的结果也是高精度的

1.4 强制类型转换

① 可能出现问题的类型转换,需要使用强制类型转换,比如高精度数值向低精度数值转换

② 强制类型转换为操作符

③ 强制类型转换会造成数据精度丢失

2. Java运算符

2.1 基本运算符

2.1.1 赋值运算符

① 赋值运算符用来给变量赋值

② 只要是"="右边的值是"="左边变量的类型所允许的值,赋值操作就可以进行

③ 如果尝试将一个不合法的值赋值给一个变量,编译时将报错(即不会有默认的从高精度到低精度的类型转换)

④ 在使用一个变量之前,必须给一个变量赋值

⑤ 除了赋值运算符,其余运算符不会改变变量的值

2.1.2 四则运算符

① 四则运算符包括加减乘除

② 四则运算符可以作用于Java中的整数和浮点数

2.1.3 括号运算符

① 括号运算符用来改变运算优先级

② 可以在没有必要使用小括号的地方使用小括号,目的是为了让运算顺序更清晰

2.1.4 余数运算符

① 余数运算符(%)用来计算余数

② 负数即可以作为余数运算符的左操作数,也可以作为右操作数,计算结果与被取模的数相同

③ Java中浮点数也可以取模

System.out.println(3.5 % 2);
// 结果为1.5

注意:② & ③并不是余数运算符的常见用法

2.2 布尔运算符

说明:布尔运算符是指计算结果为boolean类型的运算符,其运算结果可以赋值给一个boolean类型的变量

2.2.1 关系运算符

① 关系运算符用来比较两个值,包括==、!=、>、<、>=、<=

② 与数值有关的类型(byte、short、int、long、float、double、char)的变量可以相互比较;boolean类型的变量只能与boolean类型的变量进行相等和不等的比较

说明:由于浮点数并不是完全精确地表示一个小数,所以最好不要使用==判断两个浮点数是否相等,而是确保两者之差在一定的精度范围内即可

2.2.2 逻辑运算符

① Java中的逻辑运算符包括&&、||、!

② 逻辑运算符只能用来操作boolean类型的变量,他的运算结果也是boolean类型

③ Java中的&&和||也有短路特性

2.3 位运算符

① 位运算符是专门针对内存中的二进制数据进行运算,Java中并不常用

② Java中的位运算符包括按位与(&)、按位或(|)、按位非(~)、按位异或(^)、左移位(<<)、右移位(>>)、无符号右移位(>>>)

③ >>为算术右移,>>>为逻辑右移

说明:位运算的常见用途

① 构成掩码

② 高效除以2(使用>>实现)

3. String类型简介

3.1 使用String类型

public class StringTest {public static void main(String[] args) {String sayHello = "Hello World";System.out.println(sayHello);}
}

说明:String不是Java中的基本数据类型

String实际上是一个类,定义的sayHello是一个对象,与基本数据类型有本质的不同,但是Java中允许使用类似基本数据类型的语法创建String类型对象

当然也可以使用后续说明的类 & 对象的语法创建String类型对象,e.g.

String sayHello = new String("Hello World");

3.2 String类型的加法运算

加法是String类型唯一允许的运算,用于实现字符串的拼接,e.g.

public class StringTest {public static void main(String[] args) {String str1 = "abc";String str2 = "123";String plusStr = str1 + str2;System.out.println(plusStr);}

3.3 String类型与基本类型的加法运算

① String类型与基本类型之间的加法操作,是将基本类型变量转换为字符串进行拼接

② 运算时要注意运算符优先级的影响

public class StringTest {public static void main(String[] args) {int a = 10;int b = 20;System.out.println("a + b = " + a + b);System.out.println("a + b = " + (a + b));System.out.println("a * b = " + a * b);System.out.println(a + b + "testString");}
}

说明1:加法从左向右运算,有一个操作数是字符串,就会将基本类型变量转换为字符串,并拼接到之前的字符串中

说明2:字符串可以和任何类型的变量进行拼接操作

3.4 字符串长度

使用字符串的length方法,可以获取字符串长度

说明:作为对比,Java数组中的length是一个属性,而字符串中是一个方法

3.5 字符串遍历

使用字符串的charAt方法,可以遍历字符串中的字符

说明1:直接使用str[0]的方式不能访问字符串中的字符,[]运算符只能作用于数组

说明2:使用字符串的toCharArray方法,可以将字符串转换为字符数组

说明3:配合toCharArray方法的一种遍历字符串方式

String str = "Hello World";
for (char c : str.toCharArray()) {// 遍历字符串
}

3.6 查找子串

使用字符串的indexOf方法,可以在字符串中查找子串,返回值为子串作为位置的下标;如果不存在,则返回-1

3.7 字符串比较

使用字符串的equals方法,可以比较2个字符串的内容是否相同

说明1:直接使用"=="运算符比较2个引用,是无法比较字符串内容的,只是判断2个引用是否指向同一个对象

说明2:此处使用new运算符新建了一个String对象与str1进行比较,如果使用和str1相同的定义方式,Java不会生成新的对象,而是返回同一个对象的引用。直到有一方修改时,才会根据写时拷贝机制生成新的对象

此处涉及Java的存储模型实现,不在本文的讨论范围

4. 转义字符

① Java中的转义字符使用与C语言中相同

② Java中如果使用了非法的转义字符会报错,即使是在字符串字面值中(C语言不会报错,会有一个警告)

Java程序设计语言基础02:Java中的基本数据类型和运算符相关推荐

  1. java基础学习 --- 第二节 变量、数据类型和运算符

    java基础学习 - 第二节 变量.数据类型和运算符 一.变量 1.变量就是会发生改变的数据,程序运行时,这些数据以变量的形式被保存到计算机的内存中.如图 2.使用变量的步骤:     声明变量 - ...

  2. Java程序设计语言基础01:绪论

    目录 1. 初探HelloWorld程序 1.1 类(Class)语法元素 1.2 main方法(main method)语法元素 1.3 System.out.println 1.4 字符串 2. ...

  3. Java程序设计语言基础03:Java中的程序执行流程

    目录 1. 简记部分 1.1 条件与循环 1.2 switch语句 1.3 continue与break 2. 变量的作用域 3. 从标准输入读取数据 4. 生成随机数 1. 简记部分 1.1 条件与 ...

  4. Java程序设计语言基础04:数组

    目录 1. 数组基础 1.1 创建数组 1.2 使用数组 2. 数组的"名"与"实" 2.1 数组的"名" 2.2 数组的"实&q ...

  5. Java程序设计语言基础05:Java的类和对象

    目录 1. 类的定义与组成 1.1 类的定义 2.2 类的使用 2. 类.对象和引用 2.1 类 2.2 对象 2.3 引用 3. 类的知识扩展 3.1 成员变量初始值 3.2 在类中定义自己的引用 ...

  6. Python程序设计语言基础02:Python基本图形绘制

    目录 1. 不同编程语言的适用对象 2. 蟒蛇绘制实例 3. 库或类的引用 3.1 Python计算生态 3.2 库引入与import语法 3.2.1 引入库整体 3.2.2 引入库函数 4. tur ...

  7. java中的基本数据类型和运算符_【Java基础】基本数据类型和运算符

    基本数据类型: 数值型: 整型: ① byte,1byte = 8bit(8位),储存是有符号的,以二进制补码表示的整数. 最小值为-128,最大值为127,默认值为0. byte在大型数组中可以显著 ...

  8. java基础知识讲解(一)数据类型和运算符

    Java是一种强类型语言,每个变量都必须声明其数据类型. Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type) ...

  9. JAVA基础——第二章,变量,数据类型和运算符

    一,变量声明及使用 申明变量再赋值 int money; //声明变量 monry = 100; //赋值 声明变量并赋值 int money = 100; //声明变量并赋值 二,JAVA常用数据类 ...

最新文章

  1. AI一分钟 | 知乎融资2.7亿美元;腾讯投资特斯拉大赚特赚
  2. sqlserver 查找某个字段在哪张表里
  3. 程序员的选房神技,GitHub上的房源爬虫
  4. 我的北京游戏开发总结【三】
  5. POJ - 2142 The Balance(扩展欧几里得)
  6. 联想微型计算机报价,联想电脑一体机报价
  7. python圆面积函数_python函数题
  8. 微软如何利用机器学习改进Win 10更新体验
  9. css练习题4,复习webpack4之CSS文件代码分割
  10. android 自定义加载动画效果,Android 自定义View修炼-自定义加载进度动画LoadingImageView...
  11. 計算機二級-java-03
  12. asp/php招聘,招聘ASP与PHP相关岗位的笔经
  13. 用SQL产生连续的自然数
  14. 脑机互联不是梦,最新脑机接口发布:智能手机可操控!
  15. mysql 设计超市订单图,JSP+MySQL校园网络超市系统的设计与实现
  16. 零基础学python电子书-零基础学Python(全彩版)
  17. 【无标题】对于_, predicted = torch.max(outputs.data, 1)的理解
  18. 安卓6.0版本后出现的语音开启失败问题,错误码20006
  19. App Zap的非常货币化策略:付费游戏的应用内购买
  20. 两道小学生的题----1000: 梦里的难题、1002: 拳皇

热门文章

  1. substr判断最后一个是不是逗号_考研最后一个月是不是很累?
  2. gba徽章机器人_《徽章机器人》倒计时网站开启 20周年纪念插画欣赏
  3. C++中cout流的输出顺序
  4. java学到什么程度安卓_自学Android到什么程度才能找到工作?
  5. linux的网卡部分
  6. 靠右对其_中重型货车靠右行驶新规实施一周
  7. 计算机机房新风机管道布置要求,新风系统管道布置—新风系统管道布置连接方法介绍...
  8. 数组转集合集合转数组 split方法
  9. 数据库数据类型和占用字节数对比
  10. Kotlin入门(15)独门秘笈之特殊类