Java基础学习笔记 —— 基础语法篇

java基础学习笔记—— 基础语法篇

记录一下这些天学习的一些关于JavaSE的基础, 因为之前有一些语法基础,所以语法部分笔记不是很完整。

前言

一、特性和优势

简单性、面向对象、可移植性、高性能、分布式、动态性、多线程、安全性、健壮性

Write Once、 Run Anywhere

二、JDK、JRE、 JVM

  • JDK: Java Development Kit

  • JRE: Java Runtime Environment

  • JVM: Java Virtual Machine

    JDK = JRE + 开发工具集(如Javac编译工具等)

    JRE = JVM + Java SE 标准类库

在这里插入图片描述

三、程序运行机制

  • 编译型解释型
    在这里插入图片描述

  • 程序运行机制
    在这里插入图片描述

  • 核心机制------ 垃圾回收

四、内存分析

语法(部分)

一、数据类型

  • java是强类型语言

  • 基本类型(primitive type)
    在这里插入图片描述

  • 引用类型(reference type)

    • (如String)
    • 接口
    • 数组

引用类型比较是比较地址

整数扩展
进制二进制八进制十进制十六进制
浮点数扩展
  • float 有限离散舍入误差大约接近但不等于

  • double

    单精度数7位有效数字,尾数用23位存储。 (float)
    双精度数16位有效数字,尾数用52位存储。(double)

浮点数比较问题

最好完全避免使用浮点数进行比较, 由于精度问题,直接比较有时可能会出错。

使用BigDecimal 数学工具类

float f = 0.1f;  //0.1
double d = 1.0/10;  //0.1
> f==d
> false    //精度不同
    
float d1 = 232313213412343232f;
float d2 = d1 + 1;
> d1==d2
>true    //一个超出表示范围的大数,再加一后。此时加一很有可能被截断。

浮点数表示

N = M × R E 如: 12.345 = 1.2345 × 1 0 1 其中, M 为浮点数的尾数, R 为阶码的基数, E 为阶的阶码 N=M×R^E \\ 如: 12.345=1.2345×10^1 \\ 其中,M为浮点数的尾数 ,R为阶码的基数 ,E为阶的 阶码 \\ N=M×RE如:12.345=1.2345×101其中,M为浮点数的尾数,R为阶码的基数,E为阶的阶码

浮点数表示:

  • 要给出尾数M的值,通常用定点小数形式表示,它决定了浮点数的表示精度,即可以给出的有效数字的位数;
  • 要给出阶码,通常用定点整数形式表示,它指出的是小数点在数据中的位置,决定了浮点数的表示范围;

假定为32位浮点数,基为2,其中最高位为符号位
在这里插入图片描述

浮点数的规格化表示

为了提高数据的表示精度同时保证数据表示的唯一性,需要对浮点数做规格化处理

在计算机内,对非0值的浮点数,要求尾数的绝对值必须大于基数的倒数,即 ∣ M ∣ > = 1 R |M| >= \frac{1}{R} M>=R1

即要求尾数域的最高有效位应为1,称满足这种表示要求的浮点数为规格化表示

正数 0.1xxxxxx

负数 1.1xxxxxx

注意,尾数的最高位始终是1,因此我们完全可以省略掉该位。

(1). 尾数用原码,且隐藏尾数最高位

​ 原码非0值浮点数的尾数数值最高位必定为 1,因此可以忽略掉该位,这样用同样多的位数就能多存一位二进 制数,有利于提高数据表示精度,称这种处理方案使用了隐藏位技术。当然,在取回这样的浮点数到运算 器执行运算时,必须先恢复该隐藏位。

(2). 阶码使用“移码”,基固定为2

从最高位依次是符号位、阶码和尾数

在这里插入图片描述

一个规格化的32位浮点数x的真值为: x = ( − 1 ) s × ( 1. M ) × 2 E − 127 x=(−1)^s×(1.M)×2^{E−127} x=(1)s×(1.M)×2E127

一个规格化的64位浮点数x的真值为: x = ( − 1 ) s × ( 1. M ) × 2 E − 1023 x=(−1)^s×(1.M)×2^{E−1023} x=(1)s×(1.M)×2E1023

  1. 浮点数存储时,按照符号,指数,位数进行存储,IEEE754标准,没有办法使用二进制进行精确表示。
  2. 单精度数7位有效数字,双精度数16位有效数字
  3. 在存储时,会先将十进制数转换成对应的二进制小数,然后将小数点移至尾数前为1的最左边,此时如果数太大时,小数点左移动大,科学计数法指数变大,尾数变多。当尾数太大,超过float或者double尾数表示范围时,将要做截断操作。

二、类型转换

转换时可能存在内存溢出精度问题

低 -------------------------------------------------- > 高

byte,short,char -> int ->long -> float -> double

  • 强制类型转换

    (类型)变量名 高 -> 低

  • 自动类型转换

    低 -> 高

三、变量

  • 局部变量

​ 必须声明和初始化值,在方法内

  • 类变量
    • 成员变量
    • 方法局部变量
    • 静态变量
      如果不初始化,默认值为 0 、0.0 ,布尔值默认为false, 除了基本类型,其余都默认为null;
public class Main{
   int x = 20;//成员变量
   static int y = 30; // 静态变量,随着类的加载而加载
   public int wrong() { 
      int i; // 方法局部变量
      return i+5;
    } 
    
}
  • 常量

    • 初始化后不能再改变值,不会变动的值;

    • 一般使用大写字符, 使用final关键字定义;

    static final PI = 3.1415926;
    

四、位运算

左移:<<   * 2    右移:>>   / 2


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cda备考学习学习笔记——基础知识(二)主要涉及了计算机科学与技术领域的基本概念和知识。 首先,它介绍了计算机网络的基础知识。网络是将多台计算机通过通信链路连接起来,使它们能够相互通信和共享资源的系统。笔记中详细介绍了网络的组成、拓扑结构和通信协议等重要内容。 其次,笔记还解释了计算机系统的基本组成。计算机系统由硬件和软件两部分组成,其中硬件包括中央处理器、存储器、输入输出设备等,而软件则分为系统软件和应用软件。笔记详细介绍了各种硬件和软件的功能和作用。 此外,笔记还对数据库管理系统进行了介绍。数据库管理系统是一种用于管理和组织数据的软件系统,它能够实现数据的存储、检索和更新等操作。笔记中详细介绍了数据库的概念、结构和操作等内容。 最后,笔记还包括了算法和数据结构的基础知识。算法是解决问题的一系列步骤和规则,而数据结构则是组织和存储数据的方式。笔记中介绍了常用的算法和数据结构,如排序算法、树和图等。 总之,通过学习CDA备考学习笔记中的基础知识(二),我们能够更好地理解计算机网络、计算机系统、数据库管理系统以及算法和数据结构等相关概念和知识。这些基础知识对于我们深入研究计算机科学与技术领域是非常重要的,也为我们日后的学习和工作奠定了坚实的基础

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值