上帝视角学JAVA8- 基础01 【2021-07-28】

说明:

      本系列以 尚硅谷宋红康老师主讲的java核心基础为蓝本,加上个人的理解。以期作为日后研究复习的资料。如果错误,请留言。 

ans 代表 回答。

【后续会补充为什么叫上帝视角,现在只是一些填鸭式的内容,方便复习】

-------------------------------------------------------------------------------------------------------------------------------

1、为什么可以跨平台?

通过不同操作系统的JVM版本,使得java可以运行在不同的操作系统。通过jvm实现跨平台!

用户-java文件-class字节码文件-

2、java的两种核心机制

ans:

  • Java虚拟机:屏蔽底层,提供跨平台能力

  • 垃圾回收机制:自动回收,程序员不用管。

    java还会出现内存泄露和内存溢出吗? ans:会!

3、java环境

  • JDK(Java development kit) java开发工具包,包含了JRE(运行环境)、javac.exe(编译工具)、jar.exe(打包工具)等。

  • JRE (Java runtime environment)java 运行时环境,包括 JVM 和 java SE 标注类库

  • JVM (Java virtual machine)java虚拟机

bin 目录就是开发工具,有很多。

db是java写的一个数据库

include 是C语言写的头文件;没错,java是C写的!

jre 就是运行时环境

lib 库文件 就是 相关的一些jar包

JavaFX-src 用Java代码编写的类和接口组成类库源码文件。该API旨在成为Java虚拟机(Java VM)语言的友好替代方案,例如JRuby和Scala。

src.zip 是java开源的一些代码,常见的一些 类 库 的源码!

4、java程序 运行过程

  1. 用户编写 java 程序 得到 .java 文件

  2. 使用javac 命令对.java 文件进行编译,得到.class 文件

  3. 使用java 命令 运行生成的 .class文件

java严格区分大小写,但是windows系统 文件名不区分大小写!

5、java程序 注释

  • 单行: //

  • 多行 : /* */ 不可用嵌套使用

  • 文档注释 : /** */ 就是比多行多了一个

文档注释可以被 javadoc.exe 解析使用javadoc 命令 + java文件 会生成html文件

6、源文件可以写多少个类?

ans:1个源文件可以声明很多类,但是最多只能有1个类被声明为 public 并且 声明为public 的这个类名必须与文件名一致!

6.1 编译之后会生成多少个class文件?

ans:一个类 会生成一个 class文件,即使写在一个java 文件中;class文件的文件名与类名一致!

思考一下为什么?

7、程序的入口 ?

ans:程序的入口是 main 方法,必须是 public, static,void 格式是固定的。参数是可变的

8、关键字与标识符【变量】

8.1具有特殊意义,有专门用途的字符串,所有字母都是小写 。

img

8.2标识符:

变量名、方法名、类名等自己需要起名字的字符序列。

  • 字母、数字、下划线、美元符

  • 数字不可用开头

  • 不可以使用关键字、保留字

  • 区分大小写,长度不限制、不能有空格

8.3命名规范:

  • 包名:所有字母都消息

  • 类名、接口名:所有单词首字母大写

  • 变量名、方法名:小驼峰

  • 常量名:全部大写,单词之间下划线连接

8.4变量使用:

  • 先声明、再使用

  • 作用域在 包含它的大括号内

  • 同一作用域不允许有同名变量

  • 生命周期?

9、数据类型:

9.1数据类型分类:

不用的数据类型在内存中分配了不同的内存空间,换句话说为了确定需要分配的内存空间大小,定义了这些数据类型。

9.2、详细介绍

  • 通常整型默认为int 如需声明未 long型 需要在后面加上 l 或者大写的L(int 可以表示21亿这么多的数,基本够用了)

  • byte 不常用,一般只会在 I/O操作时,会使用 一个byte数组作为缓冲容器。

  • java中的浮点型默认为 double ,如果需要float型需要 加上f 或者大写的F

  • float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。

  • float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;

    double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

    对精确度要求特别高时,必须使用Bigdecimal。

    神奇的事情:float虽然只有4个字节,但是能表示的范围比long要大

    原因是:存储的是 科学计数法,分为底数和指数。

    https://blog.csdn.net/weixin_42518062/article/details/85046071

    • 字符型 char 占用2个字节 ,1个字节是8个bit。所以 1个char类型占用 16个bit

    • 所有的字符都是使用 Unicode 编码,所有一个字符可以存储1个汉字或者1个汉字或者其他字符

    • 有3中表现形式: 单引号('a')、反斜杠表示转义特殊字符('\n')、直接使用Unicode值表示('\u000a')

    • char 可以进行运算,因为每一个字符都有自己的Unicode码,实质是Unicode码运算。

    • ASCII编码;Unicode编码 UTF-8是Unicode的一种实现。使用1-6个字节表示。

    boolean 型: 只有2个值 true 和false

    • 不可以用0 、非0来表示 true、false;C语言是可以的

    • 但是事实上,编译之后还是用int型表示真假,1替换true,0替换false。写代码还是必须写true、false

    String 类型:

    • 其实String类型和我们自己定义的类没有什么区别

    • String 使用""来声明一个字符串

    • String 只能使用 + 来和8种基本数据类型做运算,结果依然的String类型。其实就是字符串拼接。

    • 为什么呢?

9.3、变量位置分类

9.4、类型转换

  1. 自动类型转换【基本类型之间的类型转换,除boolean之外】

容量小【表示数的范围】的会自动转换为容量大的。

  • char、byte、short 三种之间是不会转换的,这3和其他的运算会先转换为int 再运算

  • boolean类型不参与运算

  • String 与这些类型进行 + 运算时,其他类型会变成String类型,进行字符串合并

2.强制类型转换

就是将容量大的转换为容量小的

  • 使用强制类型转换符号 (需要强制转换的类型)

  • 可能会造成精度降低、或者溢出

  • String类型不能直接转换为基本类型,但是可以通过 要转换的基本类型的包装类的方法类进行转换

String a= '43';  int i = Integer.parseInt(a);

10、进制【了解】

对于整数:

java中的二进制:

  • java中整数默认int,占4个字节 共32bit。用二进制表示整数,第32位是符号位;当long类型,第64位就是符号位。即最后1位是符号位。

  • 有三种形式:原码、反码、补码。 正数来说,3码合一。

原码:直接将一个数值转换为二进制数,最高位是符号位

反码:对原码进行按位取反,最高位为1;正数的反码是原码本身。

补码:正数的补码是原码本身,负数的补码是反码+1

  • 计算机都是以补码储存数据的!!!

-----------------------------------------------------------------------------------------

01完结!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值