10_java中布尔类型的常量_Java开端~数据类型与运算符(你忽视了么?)

前言

数据类型与运算符虽然简单,并且在很多地方都和C语言相同。但是我们也要注意这些细节,以及他们的不同之处,防止写代码的时候总会踩入一些不必要的坑!

变量的命名规则

硬性指标:

一个变量只能包含数字、字母、下划线

不能以数字开头

变量名大小写敏感,例如:num和Num是两个不同的变量

注意:虽然语法上也允许使用中文\美元符($)命名变量,但是强烈建议不要这样做!

软性指标:

变量命名要具有描述性,见名知意。

变量名不建议使用拼音(但是不绝对)。

变量名的词性推荐使用名词。

变量命名推荐小驼峰命名,当一个变量名是由多个单词构成的时候,除了第一个单词之外,其他单词首字母都大写!

例如:int minValue = 1;

​ String studentName = “某某”;

数据类型

整型

学习C语言时,我们知道int变量在32位计算机下占4个字节,在64位占8个字节,但是在JAVA中,一个int变量只占4个字节,和操作系统没有直接关系!!!同理可得,其他类型也是如此!这也间接地体现了JAVA的安全性。

类型

空间大小

数据范围

语法格式举例

byte

1

-2^7 ~ +2^7-1

byte value = 0;

short

2

-2^15 ~ +2^15-1

short value = 0;

int

4

-2^31 ~ 2^31-1

int num = 10;

long

8

-2^63 ~ 2^63-1

long num = 10L;

我们还可以通过JAVA中包装类的成员变量来查看数据取值范围。

例如:System.out.println(Integer.MAX_VALUE); // int 的最大值

​ System.out.println(Integer.MIN_VALUE); // int 的最小值

注意事项:

long型变量在初始化时,数据后面要加L,当然大小写都可以,但是为了区别数字1,用大写会更好一点。

byte字节类型表示的也是整数,和字符类型互不相干!

short一般不推荐使用。

浮点型

JAVA中的浮点数的内存布局和整数差别很大,不能单纯的用 2 ^ n 的形式表示数据范围。内存布局遵守 IEEE 754 标准(和C语言一样),尝试使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差。float同样遵守 IEEE 754 标准, 由于表示的数据精度范围较小,一般在工程上用到浮点数都 优先考虑 double,不太推荐使用 float。并且若小数形式后面不写f或F来标识,那计算机会自动认为该数字为double型!

类型

空间大小

语法格式举例

float

4

float num = 1.0f;

double

8

double num = 1.0;

字符型

计算机中的字符本质上是一个整数。 在 C 语言中使用 ASCII 表示字符,而 Java 中使用Unicode 表示字符。因此一 个字符占用两个字节,表示的字符种类更多,包括中文。

语法格式举例:char ch = ‘啊’;

代码中如果使用一个字符表示一个汉字

则执行javac时需要加上 -encoding UTF-8 例如:javac -encoding UTF-8 Test.java

布尔类型

在C语言中0为假,非0为真,而在java中却不是这样的。java中用boolean类型的变量来表示,且只有两种取值true表示真,false表示假。对于boolean类型的空间大小,有些JVM中占1个字节,有些是占1个比特位,没有明确规定空间大小。

boolean value = true;

System.out.println(value + 1);

// 代码编译会出现如下错误

Test.java:4: 错误: 二元运算符 '+' 的操作数类型错误

System.out.println(value + 1);

^

第一个类型: boolean

第二个类型: int 1 个错误

字符串类型

String不是基本类型,而是引用类型。字符串中的数据存储在常量池中,且一些特定的不太方便直接表示的字符需要进行转义。

语法格式示例:String name = “张三”;

字符串的+操作,表示字符串拼接:

String a = "hello";

String b = "world";

String c = a + b;

System.out.println(c);//输出结果helloworld

还可以用字符串和整数进行拼接:

String str = "result = ";

int a = 10;

int b = 20;

String result = str + a + b;

System.out.println(result); // 执行结果 result = 1020

常量

在C语言中有const 限定,使变量变成常量。而java使用final来限定的!当然这里也分为字面值常量(例如:10)和final关键字修饰的常量。那么变量和常量有什么区别呢?变量在运行期间可以改变的,并且是在运行的时候才能知道它的值;而常量在运行期间不能改变,并在编译期间就可以确定它的值!

final int a = 10;

a = 20;// 编译出错. 提示 无法为终变量a分配值

类型转换

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

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

毫不相干的两种类型, 不能相互赋值。

使用字面值常量赋值的时候, Java 会自动进行一些检查校验, 判定赋值是否合理。

int a = 10;

long b = 20;

a = b; // 编译出错, 提示可能会损失精度.

b = a; // 编译通过.

强制类型转换:

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

如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失.。

将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查。

int a = 0;

double b = 10.5;

a = (int)b;

int a = 10;

boolean b = false;

b = (boolean)a; // 编译出错, 提示不兼容的类型.

不同类型的数据混合运算, 范围小的会提升成范围大的。由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算。

运算符

java中的大部分运算符和C语言中还是一样的,那接下来我们就说一下一些特殊情况以及新增运算符!

% 表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模 System.out.println(11.5 % 2.0); // 运行结果 1.5

在C语言中我们可能会有这样的表达式:!0;但是在java中这是不可行的,"!"运算符只能作用于布尔表达式上。

i++的特殊情况你知道吗? int i = 10;

i = i++;

System.out.println(i);//结果为10

新增无符号右移运算符">>>"。 int a = 0xffffffff;

System.out.printf("%x\n", a >>> 1);

// 运行结果(注意, 是按十六进制打印的) 7fffffff

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值