• java零散知识点复习--基础知识


    • 强制转换不四舍五入

    • (把一个浮点数强制转换成整数时,java将直接截断浮点数的小数部分。)

    • int a = 79;

      double b = (double)a; // 输出b = 79.0
      系统自动转换图(eg:系统会将byte转换成short但不能将byte转换成char)

    在这里插入图片描述

    • 字符串"true","false"不会自动转换成boolean类型,可以使用 boolean
      b=Boolean.parseBoolean(String)的方法进行转换。此方法将忽略字符串的大小写。
      若此String类型的值不是true或者false,将会自动转换成false进行赋值。

    • boolean类型的值和字符串进行连接运算,则boolean类型的值将会自动转换成字符串 String c = b + “”;

    • double a = 3.14_15_92_65_36; 与 double a = 3.1415926536;相等
      这样写可以直观的看清有数据有多少位

    • 虽然boolean类型的变量或值只要1位即可保存,但由于大部分计算机在分配内存时允许分配的最小内存单元是字节(8位),因此bit大部分时候实际上占用8位。

    • 用1个字节的最低位存储,其他7位用0填补,如果值是true的话则存储的二进制为:0000
      0001,如果是false的话则存储的二进制为:0000 0000。

    • 只有浮点数除以0才会得到正无穷或者负无穷大,因为java语言自动把和浮点数运算的0当成0.0处理。
      如果一个整数值除以0,则会抛出异常ArithmeticException:/by zero(除以0异常)

    • 正无穷通过Double.POSITIVE_INFINITY 或者Float.POSITIVE_INFINITY来表示
      负无穷通过Double.NEGATIVE_INFINITY 或者Float.NEGATIVE_INFINITY来表示

      非数通过Double.NaN或者Float.NaN来表示 所有的正无穷大数值都相等,所有的负无穷大数值都相等
      NaN不与任何数相等,甚至和NaN也不相等 正无穷大,负无穷大,非数都属于浮点数

    • 如果求余运算符运算的两个操作数都是整数类型,则求余运算的第二个操作数不能是0,否则将引发除以零异常。

    • 如果求余运算的两个操作数中有一个或两个都是浮点数,则允许第二个操作数是0或者0.0,求余结果为NAN(非数)。

    • java浮点数默认是double类型,若想要java将它作为float类型使用,应在这个浮点数后面紧 跟f或者F,在浮点数后面加D或者d,将其强制指定为double类型,但通常没有这种必要

    • 若要精确保存一个数,用BigDecimal类型 float类型数据:第1位是符号位,接下来的8位表示指数,在接下来的23位表示尾数
      double类型数据:第1位是符号位,接下来的11为表示指数,在接下来的52位表示尾数

    • 一个汉字两个字节,用char存放

    • 计算机底层保存字符时,实际保存该字符对应的编号,因此char类型的值也可直接作为整型值来使用,它相当于一个16位的无符号整数,范围是0~65535

    • 什么是字符集?
      计算机只能保存二进制码,因此电影,音乐,图片,字符都需要先转换成二进制码,然后再保存。因此平时会听到avi,png,mov等各种电影格式;MP3,wma等各种音乐格式;gif,png等各种图片格式。

    • 直接把所有需要保存的字符编号,当计算机要保存某个字符时,只要将该字符的编号转换为二进制代码,然后保存起来即可。

    • 字符集就是所有字符编号的组成之和。

    • 整数值默认就是int类型,因此使用二进制形式定义整数时,二进制整数默认占32位,其中第32位(也就是正着数第一位)是符号位;如果在二进制整数后加l或者L后缀,那么这个二进制整数默认占64位,同理,第一位为符号位。
      负数在计算机里是以补码的形式存在的,计算式还需转换成原码进行计算。

    • 二进制整数以0B或者0b开头;八进制整数以0开头;十六进制整数以0x或者0X开头 int a = 0b111; == int a =
      0B111; int b = 011; int c = 0xaF; == int c = 0XaF;(字母大小写不限定)

    • 可以直接把一个较小的整数值(在int类型的表示范围之内)直接赋给一个long类型的变量,这并不是因为java会把这个较小的整数值当成long类型来处理,java依然把这个整数当成int类型来处理,只是因为int类型会自动类型转换成long类型。

    • 如果一个大整数超过了int类型的表示范围,java不会自动把这个整数值当成long类型来处理,如果希望java将其当成一个long型来处理,在这个整数后加l或者L后缀。

    • 字符串是一个类,是一个引用数据类型

    • 空引用(null)只能被转换成引用类型,不能转换成基本类型。

    • char相当于无符号整数类型

    • 引用类型:类,接口,数组类型,null类型

    • 空类型就是null类型,这种类型没有名称。所以不可能声明一个null类型的变量或者转换到null类型。空引用(null)是null类型变量唯一的值,可以转换成任意的引用类型。

    • 什么是变量?变量有什么用? 程序对变量赋值,实际上就是把数据装入该变量所代表的内存区的过程;
      程序读取变量的值,实际上就是从该变量所代表的的内存区取值的过程。 变量相当于一个有名称的容器,该容器用于装各种不同类型的数据。

    • java中的关键字(都是小写的)
      在这里插入图片描述

    • 详细介绍:https://baike.baidu.com/item/java%E5%85%B3%E9%94%AE%E5%AD%97/5808816?fr=aladdin
      保留字:goto,const java提供了三个直接量:true,false,null

    • java语言的标识符必须以字母,下划线(_),美元符( ) 开头,后面可以跟任意数目的字母,数字,下划线 ( ) ,美元符 ( )开头,后面可以跟任意数目的字母,数字,下划线(_),美元符( )开头,后面可以跟任意数目的字母,数字,下划线(),美元符() 数字不能打头
      不能包括java关键字,保留字,直接量 不能包括空格和除$外的其他特殊字符。

    • 一个语句可以跨多行,只要在最后结束的地方使用分号结尾即可 eg:String hello = “你好” + “java”;

    • 一个变量和字符串、变量名不能跨行书写

    • 执行java的步骤: 程序员编写java源文件(.java文件)
      使用javac编译Java源文件,形成
      .class的字节码文件
      使用java解释执行,生成特定平台的机器码,通常为*.exe可执行文件

    • java解释器(虚拟机)负责解释执行字节码文件

    • java编译器编译时生成了与平台无关的字节码文件,这些字节码不面向任何平台,

      只面向JVM

    • 所用平台上的JVM向上提供给java字节码程序的接口完全相同,但向下适应不同平台的 接口则互不相同

    • JVM是一个抽象的计算机,具有指令集并使用不同的存储区域,它负责执行指令,还要管理数据、内存和寄存器

    • public static void main (){} public 和 static可以互换位置

    • 定义main方法只能小写,否则报错(错误:在类XXX中找不到main方法,请将main方法定义为:public static void main(String[] args)),因为java虚拟机只会选择从main方法开始执行;对于Main方法,java虚拟机只会把它当成一份普通方法,而不是程序的入口。

    • 把一个浮点数强制转化成整数时,java将直接截断浮点数的小数部分。(不四舍五入)

    • 将int 233转换成byte类型
      在这里插入图片描述

    • 32位转换成8位截掉前面的24位,剩下后面的8位,由于8位的开头是1开头的,说明是负数,而负数在计算机中常用补码来表示,将它再次取补,得到它的原码。

    • 随机生成字符串验证码的字符串生成 先生成随机的数字,将它们强制转换成字母,再连接起来就好了
      在这里插入图片描述

    • float a = 5.6; //错误,因为5.6默认是double类型, float a = (double)5.6; //正确

    • 字符串不能直接转换成基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型 eg: String a = :“45”;
      int val = Integer.parseInt(a);

    • 包装器类型:int–Integer long–Long char–Character float–Float double–Double boolean–Boolean byte–Byte short–Short

    • 整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型
      val将自动转换成int类型,int类型赋值给short类型,发生错误
      在这里插入图片描述

    • System.out.println(“Andy” + ‘a’ + 7); //输出Andya7
      System.out.println(‘a’ + 7 + “Andy”); //输出104Andy(char类型转换成int类型,
      与7相加,再与Andy拼接成字符串)

    • 当程序第一次使用某个字符串直接量时,java会使用常量池来缓存该字符缓存直接量,
      如果后面的部分需要用到该字符串直接量时,java会直接使用常量池中的字符串直接量

    • 常量池:指的是在编译阶段被确定,并保存在已编译的.class文件中的一些数据,它包括 关于类,方法,接口中的常量,也包括字符串的直接量。
      在这里插入图片描述

    • 结果都为true,s1,s2都在常量池中拿取数据,所以两个都返回true

    • 类的初始化原则
      静态的东西最先运行。静态全局变量和静态代码块谁先运行取决于谁写在前面。且静态的东西永远只运行一次。第二次new的时候既不会初始化static变量,也不会运行static代码块。

      非静态代码块,成员变量,构造方法的调用顺序? 全局变量和非静态代码块的执行顺序看谁写在前面,构造方法总是最后调用。

      构造子类时,首先会构造一个父类。等父类构造完成后才会构造子类。非静态代码块和对象绑定,所以父类的非静态代码块是在构造父类对象的时候运行的。

    • 定义接口里的方法不需要加abstract修饰,默认为抽象方法,里面可以定义静态方法和带方法体的方法(default方法,JDK1.8后新增)

    • 静态方法必须要有方法体

    • 非静态代码块中能够调用成员函数?

      可以,静态函数也可以。

    • 为什么构造方法总是最后执行的原因:
      构造方法的作用是对类初始化。具体来讲是对类的变量进行初始化。那么首先得有变量才能对变量进行初始化。所以总是变量先构造出引用,最后构造函数才得到执行。
      在这里插入图片描述
      在这里插入图片描述

    • 执行Main方法不需要创建对象就可以执行了,如果有静态对象,先初始化静态对象,再执行main方法,与两个写的顺序无关。
      http://zwmf.iteye.com/blog/1738574

    • String.valueOf(Long.MAX_VALUE);

    • BigInteger.valueOf(a);

      //将Long能表示的最大值装换成字符串
      //将Long型数据转换成大整数
      在这里插入图片描述

  • 相关阅读:
    MySQL timestamp NOT NULL插入NULL的问题
    网络安全(黑客)自学——从0开始
    Mybatis3详解 之 全局配置文件详解
    C++多线程编程(第四章 promise和future)
    漏刻有时百度地图API实战开发(1)华为手机无法使用addEventListener click 的兼容解决方案
    揭示语言大模型的采样过程
    如何在Vuex中处理异步操作?
    goroutinue
    python_data_analysis_and_mining_action-master-12
    纯代码方式杀死指定进程名的进程(Linux&Windows)
  • 原文地址:https://blog.csdn.net/qq_39671159/article/details/126130386