从零开始的JAVA生活(1)JAVA关键字与类型转化

同C++有所不同的是JAVA并不支持隐式向下转型,因为这会使得精确度降低,而JAVA中不同数据类型精度由小到大排列如下:char-->byte --> short --> int --> long --> float --> double。 但如果我们偏要向下转型会发生什么事呢

java 复制代码
  byte a=100;  
  byte c=400;//Incompatible types. Found: 'int', required: 'byte'
  a+=c;    
  c=50;
  byte d=a+c;//Incompatible types. Found: 'int', required: 'byte'

我们可以发现:当a的值在-128-127之间的时候,并不会报错,而到了400时则会。但这里d没有超过啊为了避免出现二义性,该程序不予以计算,就出现了上述结果啦~。 而在这里有些不同的是a+=c,程序并不会报错,这是因为+=隐式的将加操作的结果类型强制转换为持有结果的类型。如果两个整型相加,如 byte、short 或者 int,首先会将它们提升到 int 类型,然后在执行加法操作。

对float也是如此 必须要在小数后加个f。如果我们要将较高的int强制转化为byte时,高位的字节会丢失。如果数值过大超出int型怎么办?答案就是在整数常量后面+ l 或者L将其转换为 long常量,那么对于超级大的数字比如:1234456749143769471835, 超过long的取值范围了怎么办?答案就是调用 BigInteger BigDecimal 两个函数去解决。

而对于字符来说则有些特殊将一个字符常量赋给字符变量时,那么无论如何赋值,一旦打印结果一定是字符,字符变量在参与运算时,是以编号身份参加的,那么如何查看'我'这个字符的编码呢?直接输出 System.out.println('我'+0);

java 复制代码
class test02{
    public static void main(String[] args){
     System.out.println('我'+0);   //25105
     char c= 25105;                
     System.out.println(c);       //我
     System.out.println((char)8888888); //?
    }

接下来就是JAVA中的关键字:

1、final

复制代码
 数据:声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。
    arduino 复制代码
    对于基本类型,final 使数值不变;
    arduino 复制代码
    对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。

    2、方法

    • private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。 3、类
    复制代码
        声明类不允许被继承

2、static

  • 1. 静态变量

  • 静态变量: 又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它;静态变量在内存中只存在一份。

  • 实例变量: 每创建一个实例就会产生一个实例变量,它与该实例同生共死。

  • 2. 静态方法

静态方法在类加载的时候就存在了,它不依赖于任何实例。所以静态方法必须有实现,也就是说它不能是抽象方法(abstract)。只能访问所属类的静态字段和静态方法,方法中不能有 this 和 super 关键字。

-3. 静态语句块

静态语句块在类初始化时运行一次。

-4. 静态内部类

非静态内部类依赖于外部类的实例,而静态内部类不需要。

-5. 静态导包

在使用静态变量和方法时不用再指明 ClassName,从而简化代码,但可读性大大降低。

-6. 初始化顺序 存在继承的情况下,初始化顺序为:

  • 父类(静态变量、静态语句块)
  • 子类(静态变量、静态语句块)
  • 父类(实例变量、普通语句块)
  • 父类(构造函数)
  • 子类(实例变量、普通语句块)
  • 子类(构造函数)

顺便一提,在运行时多态的优先级为:在继承链中对象方法的调用存在一个优先级:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。

相关推荐
小二·27 分钟前
Spring框架入门:深入理解Spring DI的注入方式
java·后端·spring
毕设源码-钟学长36 分钟前
【开题答辩全过程】以 基于springboot和协同过滤算法的线上点餐系统为例,包含答辩的问题和答案
java·spring boot·后端
计算机毕设小月哥1 小时前
【Hadoop+Spark+python毕设】中风患者数据可视化分析系统、计算机毕业设计、包括数据爬取、Spark、数据分析、数据可视化、Hadoop
后端·python·mysql
q***44151 小时前
Spring Security 新版本配置
java·后端·spring
计算机毕设匠心工作室1 小时前
【python大数据毕设实战】强迫症特征与影响因素数据分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
o***74171 小时前
Springboot中SLF4J详解
java·spring boot·后端
雨中散步撒哈拉2 小时前
18、做中学 | 初升高 | 考场一 | 面向过程-家庭收支记账软件
开发语言·后端·golang
韩立学长2 小时前
【开题答辩实录分享】以《智慧物业管理系统的设计与实现》为例进行答辩实录分享
java·后端·mysql
d***95623 小时前
springboot接入deepseek深度求索 java
java·spring boot·后端
iOS开发上架哦3 小时前
Swift中对象实例方法名混淆问题详细解决方法
后端