再次复习一次Java基础

8个基本的数据类型

  • int
    • 32位
    • 4个字节
    • 正负20亿
    • 不能存手机号
  • long
    • 64位
    • 8个字节
  • float
    • 32位
    • 4个字节
    • 34.0f
  • double
    • 64位
    • 八个字节
  • short
    • 16位
    • 两个字节
  • byte
  • char
    • 16位
  • boolean

final 关键字

  • 修饰 变量 变成常量 要全大写
    • 一旦赋值不能被修改
  • 修饰类
    • 不能被继承
  • 修饰方法
    • 不能被重写
      • 重写 子类继承父类 重写父类方法
      • 重载 一个类中 相同方法名 但是方法签名不同 参数列表不同

运算符

  • 位运算
    • 注意 无符号右移 :无论是正数还是负数,高位通通补0
    • 以及右移 要对32取模:原因int为32位
  • 强制类型转换 下图 逆向都要强制类型转换 而且 要加上强制类型转换的类型
  • int a=(int) 123L;
  • i++ 和++i的问题:
    i++是这个i本身没有变化而后面会执行加1例如1++.打印出来为1
    ++i是对本身直接加一例如++1,打印出来直接为2

字符串

字符串如何保证不可变

  • char类型的数组 用final修饰
  • String 类 也是final修饰
    • 希望本类的所有特性(方法)不被子类修改
  • 没有提供修改字符串的方法
    (所以string每次拼接都是新建一个char数组)

Java 的设计者认为共享带来的高效率远远胜过于提取、 拼接字符串所带来的低效率

StringBuilder:线程不安全(在append方法继承的AbstractStringBuilder的append方法,这个方法在第七行可能在两个线程都执行到第七行,而count是同一个值,而执行完后得到的也就是相同的,而导致数据不准确,而执行到第五行时线程1执行到第五行而cpu的时间片段用完之后线程2执行第五行之后,他的容量没有扩容会报一个ArrayIndexOutOfBoundsException异常)

StringBuffer:线程安全(同样是继承的AbstractStringBuilder的append方法,但是在stringBuffer里面加了一个锁)

输入和输出

输入使用

Scanner write = new Scanner(System.in);

write.nextInt()

这种写法

如何输入

输出使用system.out.printh这种

字符串的api


```java
String str = "abcdef";
        //charAt 返回第几个字符
        System.out.println("第几个字符:" + str.charAt(0));
        //codePointAt 返回a这个字符的码点是多少
        System.out.println("码点是:" + str.codePointAt(0));
        //offsetByCodePoints
        System.out.println("" + str.offsetByCodePoints(0, 1));
        //compareTo 返回0相同,返回正数 str在“abcde”之后,返回负数在“abcde”之前
        System.out.println("字典序比较:" + str.compareTo("abcde"));
        //startsWith
        System.out.println("是否以“”开头:" + str.startsWith("a"));
        //endsWith
        System.out.println("是否以“”结尾:" + str.endsWith("f"));
        //equalsIgnoreCase 忽略大小写
        System.out.println("忽略大小写:" + str.equalsIgnoreCase("ABCDEF"));
        //indexOf
        System.out.println("a相对与位置什么地方:" + str.indexOf("a"));
        System.out.println("f相对与位置什么地方:" + str.indexOf("f"));
        //indexOf 97->码点  从第几个开始,默认是从第0个开始
        System.out.println("a相对与位置1的什么地方:" + str.indexOf(97,1));
        //lastIndexOf  注意:lastIndexOf()方法虽然是从后往前搜索,但返回的位置是从前开始数的。
        System.out.println("a相对与位置1的什么地方(从后往前):" + str.lastIndexOf(97,1));
        //lastIndexOf
        System.out.println("a相对与位置什么地方:" + str.lastIndexOf("a"));
        System.out.println("f相对与位置什么地方:" + str.lastIndexOf("f"));
        //toUpperCase
        System.out.println("变为大写:" + str.toUpperCase());
        //toUpperCase
        System.out.println("变为小写:" + "ABCDE".toLowerCase());
        //substring
        System.out.println("从第一个位置切割:" + str.substring(1));
        //substring  3-1 = 2 不包括第三个位置 abcdef
        System.out.println("从第一个位置切割到第三个位置:" + str.substring(1,3));
        String str2 = " aaabbb ";
        System.out.println("去除空格:" + str2.trim());
        System.out.println("以逗号隔开:" + String.join(" ",str,"a","b","c"));
        List<String> list = new ArrayList<String>();
        list.add("s1");
        list.add("s3");
        list.add("s5");
        list.add("s7");
        System.out.println(String.join(",", list));

对象和类

静态域

类加载顺序

1.首先加载父类的静态字段或者静态语句块

2.子类的静态字段或静态语句块

3.父类普通变量以及语句块

4.父类构造方法被加载

5.子类变量或者语句块被加载

6.子类构造方法被加载

构造器的特点

- 和类名一样
- 可以有0个一个或者多个参数
- 通过new调用
- 如果我们不给他构造函数 java会自动给他一个默认的无参构造函数
- 如果 我们有显示的给定构造函数那么以我们给定的为准 java不再给定默认的构造函数

封装的优点

- 可以减少耦合
- 提高数据的安全性


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值