Java 基础

java 基础

  • null不能打印,’’不能打印
  • 基本类型和引用类型(String)
  • 单精度浮点数float 4字节,双精度浮点数double 8字节,用科学计数法存的,省空间
  • 数据范围与字节数不一定相关。例如float
  • 浮点数默认double,想使用float,用后缀F
  • 整形默认int,使用long,用后缀L
  • 作用域:定义开始到,所属大括号结束
  • 自动类型转换:数据范围从小到大 范围:float > long
  • 强制类型转换:会发生数据溢出(大 -> 小),精度损失(double -> int,不是四舍五入)
  • char 数学运算时转换为ASCII码,char short byte数学运算时首先会提升为int
  • boolean 不能发生数据类型转换
  • 0 -> 48 A -> 65 a -> 97
  • 运算里面不同类型时,结果是数据范围大的那种
  • 任何类型和String连都会变成String
  • 复合赋值运算符隐含了一个强制类型转换:
byte num = 30;
num += 5;
/*
num = byte + int
num = int + int
num = (byte) int
*/
  • &&|| 具有短路效果,如果左边可以判断出结果,右边不执行
  • 三目运算符冒号左右必须满足类型匹配
  • 方法定义不能嵌套
  • java 9 jshell 类似于python的控制台, 退出/exit
  • 对于byte,short,char,如果右边没有超过范围,那个javac会默认隐含得进行强制类型转换
short a = 3;
short b = 5;
short result = a + b; //这是编译错误,因为short会提升为int
short result = 3 + 5; //这是对的,编译器会计算好值,然后强制转换,但如果有变量参与就不这样
  • case 后面数值不能重复, default 不一定放最后
  • switch 后面类型:
    • 基本数据类型:byte, short, char, int
    • 引用数据类型: String, Enum, Scanner 除了基本类型
  • 方法不能嵌套
  • 方法重载
    • 相关因素:参数个数不同,类型不同,多类型顺序不同
    • 无关因素:参数名称,返回值类型(可能会产生歧义),修饰符
  • 静态初始化使用省略模式,就不能拆成两个步骤
int arrayD[];
arrayD = { 10, 20, 30 }; // 这样会报错
  • 直接打印数组得到的是内存地址hash值.

  • 动态数组初始化:整数默认为0,浮点类型默认0.0, 字符默认\u0000, 布尔默认为false, 引用类型默认为null

  • Java 内存

    • 栈:方法中的局部变量。方法的运行在栈中。
    • 堆:凡事new出来的东西都在堆当中。 堆内存里面的东西都有一个地址值。 堆内存里面的数据都有默认值。
    • 方法区:存放.class相关信息,常量和静态变量(静态区),包含方法的信息。共享。
    • 本地方法栈:native方法服务
    • 程序计数器
      在这里插入图片描述
  • int[] arrayB = arrayA 此时要是修改B,A也会被修改

  • 数组new出来之后长度不变

  • 数组作为参数时传递的是数组的地址值,返回值时返回的也是地址

  • 同一包下用别的类可以不用导包

在这里插入图片描述

  • 引用类型当参数时传的是地址,返回值时也是地址

  • 局部变量没有默认值,方法内部。参数也是局部变量。在栈内存

  • 成员变量有默认值,整个类可以使用。在堆内存。

  • 封装:方法和private boolean的get 为 is

  • Java Bean

    • 所有成员变量都是private
    • 为每一成员变量编写一对GetterSetter
    • 编写一个与参数的构造方法
    • 编写一个全参数的构造方法
  • java.lang 不用导包

  • 匿名对象,new出来后没有赋给左边,只能使用唯一的一次

  • random.nextInt(3); 左闭右开

  • ArrayList<E> 中的E只能是引用类型,不能是基本类型(想用的话就用包装类)

    • ArrayList 打印的不是地址,是内容
  • 自动拆箱,装箱

    • 装箱:基本类型 --> 引用(包装)类型
    • 拆箱:引用(包装)类型 --> 基本类型
  • ==

    • 基本类型比的数值
    • 引用类型比的地址
  • 所有字符串都是String实例对象

    • 内容永不可变(是常量)
    • 可以共享使用
    • 效果相当于char[], 但底层实现为byte[]
    • 双引号字符串,就在字符串常量池(在堆当中),字符串常量池中的对象保存的是字节数组(堆中)的地址;而new出来的不在字符串常量池
    • 推荐写"abc".equals(str);, 常量放前面
    • concat拼接返回的是一个新的字符串,原来那个不变
    • indexof(String str) 找到str在this里面第一次出现的位置
    • 字符串截取函数,左闭右开,返回新字符串
  • static

    • 属于类,对象共享
    • static 修饰方法是类方法(用类名称直接调用,对于本类可以省略类名称),其他是成员方法
    • 静态不能直接访问非静态,成员可以访问静态(因为先有静态内容,后有非静态内容)
    • 静态方法不能用this
    • 静态代码块:第一次到达本类时,唯一一次执行
    • 静态内容总是先于非静态内容
    MyClass obj = new MyClass();
    obj.staticMethod();  //正确不推荐,javac会翻译为MyClass.staticMethod()
    MyClass.staticMethod(); // 推荐
    
    

在这里插入图片描述

  • Arrays:toString
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值