【JavaSE】1.语言基础

语言基础——入门、常量

入门

  • 工程文件.java
    • javac编译为.class字节码文件(这是jvm的可执行文件,类似于win系统下的.exe文件)
    • .class文件的优点:跨平台
  • JVM内存
    • Stack(存局部变量)、Heap(Java对象)、方法区(字节码文件)
    • 本地方法栈、寄存器(Register)
  • 程序的运行:
    • Stack栈:main方法进入:压栈
    • Heap堆:new新对象就放在堆内存里面

Package

  • 包名:com.hzyc.demo(包名统一使用单数形式,包下的类名可以有复数)
    • src:存放源码,包含很多package;package:存放的文件夹
    • 定位:package com.hzyc.demo(必定在首行)
    • 导包:import com.google. _(_代表全部导入)
  • java. Lang包、java.io包是java自带的,包括了很多基础功能
    • java.lang不需要导包(Math、String)
    • java.util……都需要导包
  • 命名:package全小写(com.hzyc.demo)、类(首字母大写)、变量/方法名(第二个单词大写)、常量(纯大写)

常量

  • 基本数据类型(封装在各种类中,有不同的二进制位数)
    • 整型:int、byte、short、long
      • byte占8bit,(-128~127,0为正整数)
      • int占16bit,(范围:-215-215-1)
    • 浮点型:double(float
      • float占32位,(1位符号位,8位2的幂指数位,23位底数位)极限值:2*2^127
      • double占64位(1位符号、11位幂指数位、52位底数位<=>精确度位,科学计数法的数字,小数点之后的位数),在十进制下是双精度<=>更精确(但永远不如整型确定!)
      • float类型的数据要加浮点型后缀!!!
    • 字符型:char、Boolean
      • char占16bit,0~65535,480、65A、97a,(大小写互换32)
  • 引用数据类型
    • 字符串、数组、类、接口、Lambda
  • 常量之外
    • 补码:
    • 变量:必须有名字且赋值,在stack中存在(只在作用域内使用)
    • print中的格式字符串:%d、%o、%x、%c、%f(有小数点的格式)、%s(String)

运算

  • 【类型转换】变量接收的必须是能接收的类型,强转需要提前自己强转完
  • byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型
  • 自加自减
    • 【先加后用】前++,那么变量【立刻马上+1】,然后拿着结果进行使用。
    • 【先用后加】后++,那么首先使用变量本来的数值,【然后再让变量+1】
  • 位运算:|&^~
  • 转型:
    • 类型的缩小转换必须使用造型
      • 原数据在造型(cast)的时候精度/长度会损失一部分
      • 自动转型:byte a = 5;(只有整型常数可以实现)
    • 类型的放大转换:直接自动转换
      • 小杯饮料倒到大杯里面
      • 但整型和浮点型之间转换会丢失精度。
  • 转义字符:
    • \rcarriage return、\nnew line
    • \"\'

循环语句、选择结构

对for循环语句的理解

  • for的执行顺序:①对变量预处理、②{for的body主体}、③继续条件的判断、④步进语句
  • for是while语句的简化版
  • break/continue
    • continue:跳过循环剩下的语句,继续下一次循环
      • 有锚定:到带有锚定标记的循环继续循环
    • break:结束循环
      • 有锚定:跳出带有锚定标记的for循环
      • 不可用在非switch、for、do、while语句中

方法(函数/功能)

  • 方法有修饰符、返回值类型、方法名称、参数
    • 修饰符(限定访问)
    • void/return:
  • 方法的重载@overload
    • ”一个名字解决各种问题“
  • 做冰淇淋的方法,加入不同原料(不同品牌的巧克力、草莓)

垃圾回收:new了一个新对象/数组,如果没有指针指向,就被回收。

数组

数组声明<==>创造一个盒子,装着同一种类型的东西

  • 引用类型:指向对象/目标地址
    • 赋值赋的是引用对象,而不是数组主体
    • new创建新数组,new后面的东西在Heap堆中,不可更改
    • 看到的只是数组的名字(地址),不是本体。
  • 数组的复制:
    1. System.arraycopy(src,srcPos, newarr, newarrPos, length);【底层为C,共享同一对象】【大数组时效率高】
    2. for循环遍历:不能往小杯子里放,不然出现“ArrayIndexOutOfBoundsException”【最易理解】【适合小数组】
    3. int[] = Arrays.copyOf(arr,arr.length)【可控新数组长度】【代码里面含有System.arraycopy】【效率最低】
    4. newarr = arr.clone();【两个数组还是共享同一对象】
  • 数组的排序
    1. Arrays类的sort()方法:可以直接对数组进行升序排列,返回排号的序给数组本身。
Array.sort(int arr)

Tips

  • 初始默认值default value:实例变量、类变量、数组元素
  • arr.length为数组的属性而非方法,为final int型

猜你喜欢

转载自blog.csdn.net/weixin_43801418/article/details/110455803