Java零基础教程专栏——数据类型

简介: 数据类型的分类引用数据类型(除基本数据类型之外的,如String )基本数据类型:4大类8种。第 1 类:整数型(不带小数的数字):byte,short,int,long第 2 类:浮点型(带小数的数字):float,double第 3 类:字符型(文字,单个字符):char第 4 类:布尔型(真和假):boolean

数据类型

46a0dbb514f14fa4963e91918411506d.png

数据类型的分类

引用数据类型(除基本数据类型之外的,如String )

基本数据类型:4大类8种。

第 1 类:整数型(不带小数的数字):byte,short,int,long

第 2 类:浮点型(带小数的数字):float,double

第 3 类:字符型(文字,单个字符):char

第 4 类:布尔型(真和假):boolean

格式:数据类型 变量名称 = 初始值;

    byte a = 1;
        short a =1;
        int a =1;
        char a ="a";
        float a =1.1;
        double a =1.1;
        long a =1;
        booleana =true;

5bf17f747a82495688ec59b3d76159e1.png

注:1字节数(1B)=8比特(8bit)

byte 1B  (8位) (8bit)
short 2B (16位)(16bit)
int 4B   (32位)(32bit)
char 2B  (16位)(16bit)
float 4B (32位)(32bit)
double 8B(64位)(64bit)
long 8B  (64位)(64bit)
boolean 1B(8位)(8bit)
//char可以赋值给int,赋的是ASCII码

自动类型转换:

  • 在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算。
  • 类型范围小的变量,可以直接赋值给类型范围大的变量
  • byte short char是直接转换成int类型参与运算的。

强制类型转换

可以强行将类型范围大的变量、数据赋值给类型范围小的变量。

数据类型 变量2 = (数据类型)变量1、数据

int a = 20;
byte b =  (byte)a; 

注意事项

  • 强制类型转换可能造成数据(丢失)溢出;
  • 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。
  • 强制类型转换是可以强行将类型范围大的变量、数据赋值给类型范围小的变量。

强制类型转换有哪些需要注意的?

  • 可能出现数据丢失。
  • 小数强制转换成整数是直接截断小数保留整数

运算符

运算符:对字面量或者变量进行操作的符号。

算术运算符

符号 作用 说明
+
-
*
/ 与“÷”相同,注意:在Java中两个整数相除结果还是整数。
% 取余 获取的是两个数据做除法的余数

注意:如果两个整数做除法,其结果一定是整数,因为最高类型是整数

+符号做连接符的识别

public static void main(String[] args) {
    int a = 5 ;
    System.out.println("abc" + 'a'); // abca
    System.out.println("abc" + a);   // abc5
    System.out.println(5 + a); // 10
    System.out.println("abc" + 5 + 'a'); // abc5a
    System.out.println(15 + "abc" + 15); // 15abc15
    System.out.println(a + 'a'); // 102
    System.out.println(a + "" +'a'); // 5a
    System.out.println(a + 'a'+" itheima "); // 102 itheima
    System.out.println("itheima"+ a + 'a'); // itheima5a
    System.out.println("itheima"+ ( a + 'a' ));// itheima102
}

image.png

自增、自减运算符

符号 作用 说明
++ 自增 变量自身的值加1
自减 变量自身的值减1
// 在表达式中或者不是单独操作的情况,++ -- 在变量前后存在区别
// ++ -- 在变量前面。先+1 -1 再使用。
int i = 10;
int j = ++i;
System.out.println(i); // 11
System.out.println(j); // 11
// ++ -- 在变量的后面 先使用再+1 -1
int m = 10;
int n = m++;
System.out.println(m); // 11
 System.out.println(n); // 10

image.png

自增、自减运算符是什么,有什么作用,需要注意什么?


++、–。对当前变量值+1、-1


只能操作变量,不能操作字面量


自增、自减运算符在变量前后有区别吗?


如果单独使用放前后是没有区别的。

非单独使用:在变量前 ,先进行变量自增/自减,再使用变量。

非单独使用:在变量后 ,先使用变量,再进行变量自增/自减

赋值运算符

就是"="。

int a = 10;  // 先看“=”右边,把数据10赋值给左边的变量a存储。

扩展赋值运算符

符号 作用 说明
+= 加后赋值 a+=b 等价于 a = (a的数据类型)(a+b); 将a + b的值给a
-= 减后赋值 a-=b 等价于 a = (a的数据类型)(a-b); 将a - b的值给a
*= 乘后赋值 a*=b 等价于 a = (a的数据类型)(a*b); 将a ***** b的值给a
/= 除后赋值 a/=b 等价于 a = (a的数据类型)(a/b); 将a / b的商给a
%= 取余后赋值 a%=b 等价于 a = (a的数据类型)(a%b); 将a % b的商给a

注意:扩展的赋值运算符隐含了强制类型转换。

关系运算符

是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)

符号 说明
== a==b,判断a和b的值是否相等,成立为true,不成立为false
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false
> a>b, 判断a是否大于b,成立为true,不成立为false
>= a>=b,判断a是否大于等于b,成立为true,不成立为false
< a<b, 判断a是否小于b,成立为true,不成立为false
<= a<=b,判断a是否小于等于b,成立为true,不成立为false

注意:在做相等判断是,千万不要把 == 误写成 =

逻辑运算符

可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果。

符号 介绍 说明
& 逻辑与 必须都是true,结果才是true; 只要有一个是false,结果一定是false。
| 逻辑或 只要有一个为true、结果就是true
逻辑非 你真我假、你假我真。 !true=false 、 !false= true
^ 逻辑异或 如果两个条件都是false或者都是true则结果是false。两个条件不同结果是true。
    double A = 9;
        double B = 6;
        // 需求:A大于等于6.5 B要大于等于8
        // 注意:必须前后都是true结果才是true
        System.out.println("------- 与:& --------");
        System.out.println(A >= 6.5 & B >=8);
        // 需求:要么A大于等于8 要么B大于等于6.5
        // 注意:只要有一个是true 结果就一定是true
        System.out.println("------- 或:| --------");
        System.out.println(A >= 6.5 | B >=8);
        System.out.println("------- 非:! --------");
        System.out.println(!true);
        System.out.println(!false);
        // 逻辑异或:必须两个不同结果才是true
        System.out.println("-------异或:^ --------");
        System.out.println(false ^ true); // true
        System.out.println(true ^ false); // true
        System.out.println(true ^ true); // false
        System.out.println(false ^ false); // false

b96186348d6d431999396f79ab701c2c.png

短路逻辑运算符

符号 介绍 说明
&& 短路与 判断结果与“&”一样。过程是左边为false**,右边则不执行。**
|| 短路或 判断结果与“|”一样。过程是左边为true**, 右边则不执行。**

注意:逻辑与 “&” 、逻辑或“|”: 无论左边是 false还是 true,右边都要执行。

    System.out.println("-----------&&  &  || |的区别-------------------");
        int a = 10;
        int b = 20;
        // System.out.println(a > 100 && ++b > 10);
        System.out.println(a > 100 & ++b > 10);
        System.out.println(b);
        int i = 10;
        int j = 20;
        //System.out.println(i > 2 || ++j > 10);
        System.out.println(i > 2 | ++j > 10);
        System.out.println(j);


7aef5cddc99e499e9c1b79c612fdd6db.png

逻辑运算符有哪些,有什么特点?


逻辑与“&” :有一个为false、结果是false

短路与&&: 一个为false、结果是false。前一个为false,后一个条件不执行了

逻辑或“|”:有一个为true、结果是true

短路或||:一个为true、结果是true。前一个为true,后一个条件不执行了

逻辑非“!”:!false=true、 !true=false

逻辑异或“^” :相同是false、不同是true。

注意:实际开发中、常用的逻辑运算符还是:&& 、 || 、 !

三元运算符

格式:条件表达式 ? 值1 : 值2;

执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2。

案例-求三个整数的最大值

需求:定义三个整数,找出最大值并打印在控制台。

分析:

  • 用三元运算符获取前两个整数的最大值,并用临时变量保存起来。
    num1 > num2 ? num1 : num2;
  • 用三元运算符,让临时最大值,和第三个整数,进行比较,并记录结果。
    temp > num3 ? temp : num3;
  • 输出结果
int num1 = 10;int num2 = 30;int num3 = 20;
int temp = (num1 > num2) ? num1 : num2;
max = (temp > num3) ? temp : num3;
或者
int max = ((num1 > num2 ? num1 : num2) > num3) ? (num1 > num2 ? num1 : num2) : num3;(建议不用这种)
System.out.println(max);

运算符优先级

7b48d2f982b24db88c314e24e619badf.png

相关文章
|
8天前
|
SQL 安全 Java
「滚雪球学Java」教程导航帖(更新2024.07.16)
《滚雪球学Spring Boot》是一个面向初学者的Spring Boot教程,旨在帮助读者快速入门Spring Boot开发。本专通过深入浅出的方式,将Spring Boot开发中的核心概念、基础知识、实战技巧等内容系统地讲解,同时还提供了大量实际的案例,让读者能够快速掌握实用的Spring Boot开发技能。本书的特点在于注重实践,通过实例学习的方式激发读者的学习兴趣和动力,并引导读者逐步掌握Spring Boot开发的实际应用。
22 1
「滚雪球学Java」教程导航帖(更新2024.07.16)
|
7天前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
23 2
|
8天前
|
Web App开发 XML Java
《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
【7月更文挑战第14天】这篇教程介绍了如何使用Java和Selenium构建一个支持跨浏览器测试的自动化测试框架。设计的核心是通过读取配置文件来切换不同浏览器执行测试用例。配置文件中定义了浏览器类型(如Firefox、Chrome)和测试服务器的URL。代码包括一个`BrowserEngine`类,它初始化配置数据,根据配置启动指定的浏览器,并提供关闭浏览器的方法。测试脚本`TestLaunchBrowser`使用`BrowserEngine`来启动浏览器并执行测试。整个框架允许在不同浏览器上运行相同的测试,以确保兼容性和一致性。
21 3
|
10天前
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
34 5
|
6天前
|
Java 数据安全/隐私保护
Java无模版导出Excel 0基础教程
经常写数据导出到EXCEL,没有模板的情况下使用POI技术。以此作为记录,以后方便使用。 2 工具类 样式工具: 处理工具Java接口 水印工具 导出Excel工具类 3 测试代码 与实际复杂业务不同 在此我们只做模拟 Controller Service 4 导出测试 使用Postman进行接口测试,没接触过Postman的小伙伴可以看我这篇博客Postman导出excel文件保存为文件可以看到导出很成功,包括水印 sheet页名称自适应宽度。还有一些高亮……等功能可以直接搜索使用
Java无模版导出Excel 0基础教程
|
13天前
|
设计模式 测试技术 Python
《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
【7月更文挑战第10天】Page Object Model (POM)是Selenium自动化测试中的设计模式,用于提高代码的可读性和维护性。POM将每个页面表示为一个类,封装元素定位和交互操作,使得测试脚本与页面元素分离。当页面元素改变时,只需更新对应页面类,减少了脚本的重复工作和维护复杂度,有利于团队协作。POM通过创建页面对象,管理页面元素集合,将业务逻辑与元素定位解耦合,增强了代码的复用性。示例展示了不使用POM时,脚本直接混杂了元素定位和业务逻辑,而POM则能解决这一问题。
29 6
|
11天前
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
【7月更文挑战第12天】在本文中,作者宏哥介绍了如何在不使用PageFactory的情况下,用Java和Selenium实现Page Object Model (POM)。文章通过一个百度首页登录的实战例子来说明。首先,创建了一个名为`BaiduHomePage1`的页面对象类,其中包含了页面元素的定位和相关操作方法。接着,创建了测试类`TestWithPOM1`,在测试类中初始化WebDriver,设置驱动路径,最大化窗口,并调用页面对象类的方法进行登录操作。这样,测试脚本保持简洁,遵循了POM模式的高可读性和可维护性原则。
15 2
|
15天前
|
XML Java 测试技术
《手把手教你》系列基础篇(九十一)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-下篇(详解教程)
【7月更文挑战第9天】在Java项目中,使用Logback配置可以实现日志按照不同包名输出到不同的文件,并且根据日志级别分开记录。
29 4
|
6天前
|
分布式计算 Java 调度
MaxCompute产品使用合集之使用Tunnel Java SDK上传BINARY数据类型时,应该使用什么作为数据类字节
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
12天前
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
【7月更文挑战第11天】页面对象模型(POM)通过Page Factory在Java Selenium测试中被应用,简化了代码维护。在POM中,每个网页对应一个Page Class,其中包含页面元素和相关操作。对比之下,非POM实现直接在测试脚本中处理元素定位和交互,代码可读性和可维护性较低。
14 0