Java基础day01

Java特性

  1. Java属于静态强类型解释型语言,具有多线程、跨平台、面向对象、自动垃圾回收
  2. 静态类型:创建变量是需要指定数据类型
  3. 动态类型:创建变量时不需要指定类型,类型在运行之后赋值时确定
  4. 强类型:数据类型一旦确定,如果想要修改必须强制类型转换
  5. 弱类型:会根据程序上下文环境自动修改数据类型
  6. 编译型:一次编译多次运行,运行效率高,跨平台性能较差
  7. 解释型:每次运行都需要进行解释,运行效率相对较低,跨平台性能较好

Java运行机制

屏幕截图 2023-09-20 160338.png

程序员编写的*.java文件(java源文件)*=>使用javac编译 => 编译生成.class文件(字节码文件)=> **使用java解释执行 =>(特定平台的机器码)

java的注释

  1. // 单行注释
  2. /* */ 多行注释
  3. /** 带信息 */ (可设置模板)

命名

文件名、文件夹名、类名、变量名等的自定义命名

  1. 规则;
    1. 只允许大小写字母,$,数字,_,且数字不能开头,不能使用关键字和保留字(关键字:Java中有特殊含义的单词,保留字:目前版本还未使用但后序版本可能会使用)
  2. 规范:
    1. 见名知义
    2. 驼峰命名

程序入口

public class Text {
	public static void main(String[] args) {
			System.out.println("hello world");
	}
}

位(bit)、字节(byte)、字(word)

1字=2字节,1字节=8位,1字=16位

  1. byte = 8bit (-27 ~27 -1);-128~127 字节
  2. short = 16bit (-215 ~215 -1); 短整型
  3. int = 32bit (-2147483648~2147483647);(-231 ~231 -1) 整型
  4. long = 64bit (-263 ~263 -1); 长整型
  5. 1-4总结:都是用于表示整数,取值范围不同

正数存储:按二进制正常存储
负数存储:按二进制补码存储(补码等于反码加一(反码:除去符号位全部取反))

数据类型

  1. 基本数据类型:
    1. 整型:
      1. byte 8bit 字节
      2. short 16bit 短整型
      3. int 32bit 整型
      4. long 63bit 长整型
    2. 浮点型: (浮点型采用科学计数法进行存储)
      1. float (单精度浮点型) 后边加f/F,不可省略
      2. double (双精度浮点型) 后边加d/D,可省略
    3. 布尔型:
      1. boolean:(true、flase)
    4. 字符型:
      1. char 16bit eg: char c1 = ‘单个字符’; (注意:为单引号)
  2. 引用数据类型
    1. 数组
    2. 接口

类型转换

  1. **Boolean不能参与转换 **(参与的:byte、short 、int、long、float、double、char)
  2. 低精度到高精度可以自动转换
  3. 高精度到低精度需要强制类型转换
  4. float采用科学计数法进行存储,float的32位存储量远大于long的64位(自动转换)
  5. 自动转换总结:
    1. byte=>short =>int=>long=>float=>double
    2. char =>int=>long=>float=>double
  6. 强制类型转换:高精度到低精度,(类型)变量名 (注意:有可能损失精度,导致数据不正确(可能会是负数,因为高位截取的原因最高位是1的话,负数存储最高位为符号位))
  7. char没有负数,正数转换char会忽略负数,把负数当正数转化然后对照ASCLL码

混合运算(Boolean不能参与运算)

  1. 当多类型混合运算时,结果为参与运算的最大类型
  2. 当混合运算类型只出现了byte、short、int、char四种的一种或多种时,结果一定是int (eg: byte+byte=int)

变量

  1. 字面量占用临时空间存储,数字默认是int,不能复用,只能临时使用一次,找不到路径所以不能修改
  2. 常量final修饰,值不能更改,但是可以复用
  3. 变量可以修改,可以复用
  4. 变量的声明:
    1. 数据类型 变量名 = 值;
    2. 数据类型 变量名,变量名……;
    3. 数据类型:变量名 =值,变量名=值……;
  5. 变量的分类:(java中没有全局变量)
    1. 局部变量:方法中的变量,(参数列表也是)
    2. 静态变量:在类体中使用static修饰的变量
    3. 成员变量:在类体中不使用static修饰的变量
  6. 变量的调用:
    1. 先声明后使用
    2. 局部变量只在方法中生效
    3. 静态变量:类名.变量名;(需要考虑权限修饰符)
  7. 变量作用域
    1. {}
  8. 变量声明不赋值的默认值
    1. 局部变量不赋值不能使用,没有默认值
    2. 静态变量和成员变量:有默认值
      1. int:0
      2. double:0.0
      3. Boolean:false
      4. char:\u0000
      5. 引用类型默认值为:null
  9. 变量优先级
    1. 局部变量可以和静态变量同名(使用(类名.)区分同名的局部变量和静态变量)
    2. 静态变量不可以和成员变量同名
    3. 使用this区分局部变量和成员变量

运算符

  1. 算数运算符:+、-、*、/、%、 ++、 –
  2. 关系运算符:>、<、>=、<=、!=("=="在比较基本数据类型是比较的是值,比较引用数据类型时比较的时地址)
  3. 逻辑运算符:
    1. &、|、! (与或非)
    2. &&、||和&、|区别:
      1. &(两边同为真则为真,第一个为假就已经为假,但第二个会执行)、|(同理),&&、||判断出来之后不会执行第二个
    3. 异或:^ (相异为1,相同为0)
    4. ‘>>’(带符号右移(正数补零,负数补一))、>>>(不带符号右移(均补0,负数可能变为正数))、<<(左移(非符号位左移,右边补0)) 【均是二进制移动】
  4. 赋值运算符:
    1. += -= *= /= %=` (不用强制转换,可以自动转换)
    2. 计算过程中自动进行强制类型转换
    3. 赋值运算 属于右结合 同优先级从右到左计算
  5. 三目运算符:
    1. xxx?yyy:zzz
    2. xxx 需要判断的语句 (布尔型)
    3. yyy 判断为真时执行的语句
    4. zzz 判断为假时执行的语句

字符串

  1. “”(双引号包裹)
  2. \ (转义)
  3. 拼接:+

流程控制、分支结构

  1. if(){}
  2. if(){}else{}
  3. if(){}else if(){}……
  4. switch(key){ case value1:语句;break;case value2:语句;break;default: 语句;break;} key:int/string型
    1. 没有break可进行case穿透

循环(三要素:初始值、终止条件、步长)

  1. for(){} 计数循环
  2. while(){} 真假循环
  3. do{}while()
  4. break:
    1. 结束循环 (可给外层循环起名来结束外层循环)
  5. continue:
    1. 结束本次循环

方法

  1. 封装特定功能的代码
  2. 方法的特点:
  3. 方法的声明;
    1. 修饰符列表 返回值类型 方法名 (参数列表){方法体}
  4. 修饰符列表:可以有可以没有,可以有多个,有些不能同时出现
  5. 返回值类型:运行结果反馈给调用处,11种数据类型的任意一种,不需要就返回void,如果指定返回值,则方法种必须有(return 指定类型)

方法分类

  1. 静态方法:static修饰的方法
  2. 成员方法:无static修饰的方法
  3. 构造方法:

方法调用

  1. 静态方法:类名.方法名(参数)
  2. 成员方法:对象.方法名(参数)

方法的重载

  1. 方法名相同,参数列表不同
    1. 个数不同
    2. 类型不同

内存分析

  1. 静态区/方法区:保存静态资源文件,如变量、方法运行时class文件等
  2. VM栈:以栈内存结构为模型,创建一块空间,主要用于执行方法(先进后出)
  3. 堆内存:保存类对象和成员变量及成员方法

递归(死循环会导致栈内存溢出)

  1. 递归就是自己调用自己(递归和迭代(循环)是等价的,递归消耗内存,效率低)
  2. 树状结构(如目录遍历)都需要递归完成
  3. 直接递归:方法自己调用自己
  4. 间接递归:两个方法相互调用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值