自动类型转换、强制类型转换、作用域、整型表数范围

一、变量的作用域

  • 测试代码:
public class Test1 {
    private static int value = 1;       // 全局变量
    private static int temp = 0;        // 全局变量
    
    public static void main(String[] args) {
        int value = 2;                     // 局域变量覆盖全局变量
        System.out.println(value);        // 输出的是局域变量,全局变量被屏蔽
        System.out.println(temp);        // 输出的是全局变量,没有在此方法内重新定义故而输出全局变量的值
    }
}
  • 结果截图

二、基本数据类型

  • 整型

通常所说的整型,实际指的是如下四种类型: byte:一个byte型整数在内存里占8位,表数范围是:-128到127. short:一个short型整数在内存里占16位,表数范围是:-32768到32767. int:一个int型整数在内存里占32位,表数范围是:-2147483648到2147483647. long:一个long型整数在内存里占64位,表数范围是:-9223372036854775808到9223372036854775807.

int是最常用的数据类型,因此通常情况下,一个java整数常量默认就是int类型。 除此之外,有如下两种情形必须指出:

1.如果直接将一个较小的整数常量(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数常量当成byte或者short类型来处理。 2.如果使用一个巨大的整数常量(超出了int类型的表数范围)时,Java不会自动把这个整数常量当成long类型来处理。如果希望系统把一个整数常量当成long类型来处理,应在这个整数常量后增加l或者L作为后缀。通常推荐使用L,因为l很容易跟1搞混。

三、Java中的类型转换

(注:鄙人认为虚线箭头方向应该反向吧,觉得不是的请积极反驳哦!)

有两种类型转换:自动类型转换和强制类型转换 1.自动类型转换 当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统将可以进行自动类型转换,就如有两瓶水,当把小瓶里水倒入大瓶中时不会有任何问题。上图中,实线箭头左边的数值型可以自动转换为实线箭头右边的数值型。 不仅如此,当把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动转换为字符串类型,即使字符串类型不再是基本类型,而是引用类型。因此,如果希望把基本类型的值转换为对应的字符串,可以把基本类型的值和一个空字符串进行连接。 2.强制类型转换 如果希望把箭头右边的类型转换为左边的类型,则必须使用强制类型转换,强制类型转换的格式是:(target Type)value,强制类型转换的运算符是圆括号。当强制类型转换时,类似于把大瓶子里的水倒进小瓶子里,如果大瓶子里的水不多还好,但如果大瓶子里的水很多,将会引起溢出,从而造成数据丢失。这种转换也被称为“缩小转换(Narrow Conversion)”。 所以说自动类型转换很安全,强制类型转换要小心。

四、字符串连接基本类型

  • 有如下代码:
        int x = 100;
        int y = 200;
        System.out.println("x+y="+x+y);
        System.out.println(x+y+"=x+y");
  • 结果:
  • 原因: “x+y=”+x+y 相当于 (“x+y=”+x)+y 先字符串与基本类型连接,转化为对应的字符型后再与基本类型变量连接,最后输出字符串。 x+y+“=x+y” 相当于 (x+y)+“=x+y” 先两个基本类型做加法运算,之后得出的结果与字符串连接都转换成字符串后输出。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏http://www.cnblogs.com

生成器&迭代器

一.生成器 在介绍生成器表达式之前,先看下列表表达式: 1 >>> l = [i for i in range(50) if i % 2] #生成...

33910
来自专栏青玉伏案

窥探Swift之使用Web浏览器编译Swift代码以及Swift中的泛型

   有的小伙伴会问:博主,没有Mac怎么学Swift语言呢,我想学Swift,但前提得买个Mac。非也,非也。如果你想了解或者初步学习Swift语言的话,你可...

1855
来自专栏desperate633

LeetCode 7. Reverse Integer分析代码

752
来自专栏Python中文社区

Python生成器的使用技巧详解

之前我们介绍了列表解析式,他的优点很多,比如运行速度快、编写简单,但是有一点我们不要忘了,他是一次性生成整个列表。如果整个列表非常大,这对内存也同样会造成很大压...

1203
来自专栏小樱的经验随笔

AIM Tech Round 4 (Div. 2)(A,暴力,B,组合数,C,STL+排序)

A. Diversity time limit per test:1 second memory limit per test:256 megabytes in...

3015
来自专栏SeanCheney的专栏

Python题目

简述函数式编程 在函数式编程中,函数是基本单位,变量只是一个名称,而不是一个存储单元。除了匿名函数外,Python还使用fliter(),map(),red...

42016
来自专栏数据处理

WordsCount

1817
来自专栏专注 Java 基础分享

漫谈计算机编码

我们知道,在计算机内部,所有的信息都是以二进制形式进行存储。无论是字符,或是视频音频文件,最终都会对应到一串由 0 和 1 构成的数字串。所以从我们能看懂的人类...

3876
来自专栏云霄雨霁

查找----基于散列表(拉链法)

2490
来自专栏老马说编程

计算机程序的思维逻辑 (6) - 如何从乱码中恢复 (上)?

我们在处理文件、浏览网页、编写程序时,时不时会碰到乱码的情况。乱码几乎总是令人心烦,让人困惑。希望通过本节和下节文章,你可以自信从容地面对乱码,恢复乱码。 谈...

2135

扫码关注云+社区