从零开始的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)。

相关推荐
2401_857622666 小时前
SpringBoot框架下校园资料库的构建与优化
spring boot·后端·php
2402_857589366 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
哎呦没7 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
_.Switch8 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
杨哥带你写代码9 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
AskHarries10 小时前
读《show your work》的一点感悟
后端
A尘埃10 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-230710 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端
Marst Code10 小时前
(Django)初步使用
后端·python·django
代码之光_198010 小时前
SpringBoot校园资料分享平台:设计与实现
java·spring boot·后端