尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Java 基础|变量、数据类型、类型转换、表达式与运算符

Java 基础|变量、数据类型、类型转换、表达式与运算符 一、变量1概念变量是计算机内存中的一块空间是程序中存储数据的基本单元。2变量的组成部分数据类型决定变量在内存中的空间大小变量名用于访问变量对应的内存空间数据变量里面存储的实际值3变量的定义声明数据类型 变量名;int a;赋值变量名 数据;a 5;4变量其他定义方式声明同时赋值数据类型 变量名 数据;同时定义多个同类型变量数据类型 变量名1,变量名2,变量3值,变量4;二、数据类型存储单位换算 位 (bit /b)字节 (Byte / B) 1B 8b 1KB1024B、1MB1024KB、1GB1024MB、1TB1024GBJava 数据类型分为两大类基本数据类型、引用数据类型1. 基本数据类型原始数据类型共 8 种(1) 整数类型表格类型字节取值范围注意事项byte1B-128 ~ 127short2B-32768 ~ 32767int4B-2147483648 ~ 2147483647整数默认字面值为 intlong8B-9223372036854775808 ~ 9223372036854775807long 字面值末尾建议加大写L区分数字 1字面值程序中直接书写出来的数据。 Java 是强类型语言。(2) 小数浮点类型表格类型字节说明注意事项float4B单精度字面值后面必须加F/fdouble8B双精度字面值 D/d 可省略开发中优先使用 doublefloat、double 使用科学计数法是近似存储非精确存储。面试题8 字节 long 和 4 字节 float 哪个存储的数据范围更大 答案float 范围更大底层采用科学计数法存储。(3) 字符类型 char占用2 字节基于 Unicode万国码编码三种字面值写法//① 单引号包裹单个字符【开发重点】 char c1 A; //② 直接写整数对应Unicode编码值 char c2 65; //代表字符 A //③ 十六进制unicode形式【了解】 char c3 \u0041; //代表字符 A转义字符\改变原有字符含义\ //单引号 \ //双引号 \n //换行 \t //Tab缩进 \\ //反斜杠(4) 布尔类型 boolean只有两个字面值true、false⚠️区别 C 语言Java 不允许使用 0/1 表示真假。2. 引用数据类型对象类型包含数组、类、接口等。String字符串属于引用数据类型字面值使用双引号包裹可以是一个或多个字符String str ada;开发小案例个人信息对应数据类型表格信息推荐数据类型姓名String年龄int成绩double性别char / String地址String电话号码String避免开头 0 丢失身份证号String存在字母 X三、数据类型提升1. 自动类型提升条件类型互相兼容小范围类型赋值给大范围类型自动转换提升顺序byte -- short -- int -- long -- float -- double char -- int -- long -- float -- double2. 强制类型转换条件类型互相兼容大范围类型赋值给小范围类型需要手动强转语法目标类型 变量名 (目标类型) 源变量;特点小数强制转整数直接截断小数部分只保留整数大数据数值落在小类型范围内数据可以完整保存❗boolean 不能参与任何类型转换强制转换也不行四、表达式概念由变量、字面值、运算符组成的式子运算之后会产生一个结果。表达式结果处理结果只用一次直接写在使用位置结果多次使用存入变量保存。表达式运算结果类型规则只要有 double 参与运算结果就是 double没有 double有 float 参与结果为 float没有 double、float有 long 参与结果为 long其余全部情况结果都是int包含bytebyte、byteshort、shortshort、byteint、intint面试题分析下面代码能否编译通过byte b1; b b 1;解析编译报错。b1运算时 byte 提升为 int表达式结果是 intint 不能直接赋值给 byte。五、运算符1. 算术运算符、-、*、/、%取余 / 取模注意boolean 不能参与算术运算 特殊规则只要任意一端是 String则变成字符串拼接最终结果为字符串。2. 赋值运算符普通赋值复合赋值、-、*、/、%⚠️重点复合赋值运算符底层自带强制类型转换不会遵循普通自动类型提升。面试题对比两段代码//代码1 byte b1; b b 1; //编译报错b1结果提升为int //代码2 byte b21; b2 1; //编译通过底层等价 b2(byte)(b21)3. 一元运算符自增自减 /--a先使用原值变量再自增 1int a2; int c a; // c2a3a变量先自增 1再使用新值int a2; int c a; // a3c3开发建议多数场景只做变量自身 1/-1不接收表达式返回结果。4. 关系运算符、、、、、!关系运算结果一定是 boolean成立为 true不成立为 false得到布尔表达式。5. 逻辑运算符短路与、||短路或非短路与、|非短路或逻辑运算符两边必须是布尔表达式。短路与左侧为false右侧代码不会执行直接整体 false非短路与无论左侧 true/false左右全部执行||短路或左侧为true右侧不再执行|非短路或两边全部执行面试和的区别短路与左侧结果为 false直接确定整体结果 false右侧代码不执行非短路与无论左侧结果左右两侧表达式都会完整执行。6. 三元三目运算符语法布尔表达式 ? 表达式1 : 表达式2执行逻辑 布尔表达式结果为true执行表达式 1 布尔表达式结果为false执行表达式 2。
返回列表