JavaSE基础知识梳理——数据类型和关键字

写在前面:

作为一名刚刚入门Java的小白,在学习了Typora的基本用法之后,就迫不及待的把原来乱糟糟的笔记转移到优美的Typora上。。。以下是整理了本人三个月以来学习的JavaSE的部分基础知识,希望能够给同样刚刚学习Java的朋友带来一点帮助,由于能力有限,文中出现的错误,还希望大家能够指出。=-=。

JavaSE基础知识梳理

一、 数据类型

1 基本类型

基本类型 大小
int 4字节
short 2字节
byte 1字节
long 8字节
float 4字节
double 8字节
char uncertain

2 引用类型

  • 自动装箱和自动拆箱发生在编译阶段
引用类型 构造方法
Integer new Integer(int value)\Integer.valueOf
Short new Short(short value)\Short.valueOf
Byte new Byte(byte value)\Byte.valueOf
Long new Long(long value)\Long.valueOf
Float new Float(float value)\Float.valueOf
Double new Double\Double.valueOf
Charactor new Charactor\Charactor.valueOf

2.1 数值类型常用方法

Integer,Double,Float,Short,Long,Byte 等类似
//静态方法
int Integer.parseInt(String s);//转换为int类型
Integer Integer.valueOf(String s or int i);//装箱
int Integer.compare(int x,int y);//比较两个数,返回-1或0或1;
String Integer.toHexString(int i);//转换为16进制的字符串
String Integer.toBinaryString();//转换为2进制的字符串

//实例方法
boolean equals(Object obj); //引用类型的数值比较用equals 
int compareTo(Integer anotherInteger);
byte byteValue();
int intValue();//转为等等类型的值

2.2 Charactor类常用方法

//各种boolean方法判断是否是某种类型的字符
//静态方法
Character.isDigit(char ch);
Character.isLetter(char ch);
Character.isLetter(char ch);
Character.isSpaceChar(char ch);
//实例方法
int compareTo(Character another);//返回0,-1,1
char charValue();

3 String类

  • 字符串类型不是基本类型,java通过封装char[]数组构建了字符串String类型,所有的""都默认为String类型

3.1 String类的常用方法

//静态方法
String.join(src,target);//用src去填充target,返回连接的结果
String.valueOf(int\double\...)//构造String类型字符串
String.copyValueOf(Charsequence c)//复制一个,返回复制的String结果
//实例方法
int length();//计算长度
boolean equals(String another);//比较内容是否相同
char[] toCharArray();//返回char数组
int compareTo(String another);//按字母顺序比较,返回-1,0,1
char charAt(int index);//返回在index处的char
byte[] getBytes();//转为字节数组,可以指定编码集
String substring(int from,int end);//获取子串,不包含end
String[] split(String regex);//以正则表达式regex分割成String[]数组
String replace(CharSequence old,CharSequence new);//替换
boolean contains(String s);
int indexOf(String s);//返回s第一次出现的索引
boolean startsWith(String s);
boolean endsWith(String s);
String concat(Charsequence c1,Charsequence c2);//拼接字符串
String trim();//去除首尾的空格
boolean equalsIgnorecases()//忽略大小写比较

3.2 String类的常见坑

比较字符串 new String(char[] array,Charset charset)创建新的一个对象,两个new出来的String比较是比较内存地址,肯定不同两个不同的String s1,s2引用同一个字符串"good",字符串存储在常量池中,因此两个对象比较的时候是相同的
比如
public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    String s1 = "good";
    String s2 = new String("good");  //尽管s1和s2的地址不同,但是s1和s2的内容相同,在contains判断的时候只判断是否有内容
    list.add(s1);
    System.out.println(list.contains(s2));
}

4 StringBuilder类

4.1 StringBuilder常用方法

StringBuilder与StringBuffer区别在于前者是非线程安全,后者线程安全,但效率较低

相对于String每次拼接都会在常量池中新建一个字符串而言,StringBuilder不会产生过多的中间资源

//实例方法
StringBuilder append(String s)//这是一个可以链式操作的方法,因为它返回的是this
StringBuilder insert(String s,int index)//在某个位置插入元素,后面的元素依次后移
void trimToSize()//使StringBuilder的容量缩减到刚好存储的元素个数大小

5 日期类

  • 日期类主要由两个,Date和LocalDate,后者较新,推荐使用

==Date类==

//构造方法
new Date()//当前时间的日期类
new Date(long time)//指定time的日期,这个日期时间是相对于1970年1月1日00:00而言,单位毫秒

==LocalDateTime\LocalDate类==

  • LocalDate是仅表示日期,LocalDateTime还表示时间
//静态方法
//获取当前时间
LocalDateTime.now()
//获取具体时间
LocalDateTime.of(int year,int month,int day ...)//等参数
//实例方法
String format(DateTimeFormatter dtf);//传入一个DateTimeFormatter
String toString();
String getDayOfYear();
String getDayOfMonth();
String getDayOfWeek();
String getYear();

==日期格式类==

  • SimpleDateFormat和DateTimeFormatter,前者格式化Date类,后者格式化LocalDateTime类,前者是线程不安全的,后者是线程安全的,只需要创建一个实例,可以被多个线程使用
//SimpleDateFormat
new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss")//创建格式
String format(Date date)//格式化日期,返回
//DateTimeFormatter
DateTimeFormatter.ofPattern("yyyy-MM-dd,HH:mm:ss")//指定格式
String format(LocalDateTime ldt)

6 大数类型

  • 大数据类型能表示更精确的数值,执行更精确的运算,有BigDecimal,BigInteger等
//常用方法
BigDecimal.valueOf()//包装
BigDecimal add();//加,参数是另一个BigDecimal
BigDecimal multiply();//乘
BigDecimal divide()//除

7 数组

  • 数组也是一种数据类型,在java里通过反射getSupperClass得到数组实现了Iterable和Cloneable接口,数组也是可迭代型的
//数组构造方法
type[] array = new type[size]
type[] array = {element}
array.length()

==Arrays工具类==

//Arrays工具类常用方法,都是静态方法
Arrays.asList(Object... obj);//可以传入一个数组,也可以可变参数传入,返回一个List集合
Arrays.sort(array);//默认按照升序和字典顺序,可以传入一个Comparator比较器
Arrays.binarySearch();//二分查找
Arrays.toString();//把一个数组转换为String的样式,即[1,2,3...]
Arrays.copyOf();//复制一个数组
Arrays.equals();//判断两个数组是否长度相同,对应index的元素也相同
Arrays.fill();//以xxx填充数组

十五、关键字


  • ==static==

    //static表示静态,对于所有被static修饰的内容,它都属于外部类所有
    
    1. static 作用于成员变量上
    static int a = 10;//a为类所有,类中所有的方法都可以访问
    2. static 作用于局部变量上
    //错误,static不能作用于局部变量,因为局部变量属于方法所有。总之方法里面不能定义static变量
    3. static 作用于内部类上
    //作用于内部类上,该内部类属外部类所有,且此时可以在内部类中定义static变量
    4. static 作用于方法上
    public static void show(){}
    //作用于方法上,该方法属类所有,该方法不能被子类重写,但是子类可以继承一个一模一样的方法。
    //static修饰的静态方法中不能使用this关键字
    
  • ==final==

    final 表示最终
    1. final 修饰变量
    final int a = 10;
    final String s = new String("abc");
    //被final修饰的变量只能被赋值一次。但是如果修饰的是引用类型,引用类型里面的属性可以变。
    
    2. static + final
    //static final 修饰的变量为"常量"
    
    3. final 修饰类
    //被final修饰的类不可被继承,因此不能和abstract联用
    
    4. final 修饰方法
    public final void get(){}
    //被final修饰的方法不能被重写,只能被子类继承
    
  • ==native==

    public native int hashCode();
    //native修饰表示这个方法是由非java语言编写的,如c++,jvm将从本地方法区中去寻找
    
  • ==transient==

    private volatile transient Constructor<T> cachedConstructor;
    private volatile transient Class<?>       newInstanceCallerCache;
    //被transient修饰的将不参与对象序列化,即ObjectOutputStream不会写入
    
  • ==assert==

    启动断言,需要给虚拟机VM参数传入-ea,也就是给main函数的args传参
    //断言失败,则会抛出断言异常
    assert 1<0;
      Exception in thread "main" java.lang.AssertionError
    
  • ==break==

    break 用于跳出循环,循环体还可以设置一个标识,break直接跳出标识的循环
    public static void main(String[] args) {
            flag:for (int i = 0; i < 10; i++) {
                while (true){
                    System.out.println("break跳出到外部标识");
                    break flag;
                }
            }
        }
    
  • ==instanceof==

    instanceof 用于判断连个对象是否是同一个实例,对于多态,instanceof始终为true
    Number a = Integer.valueOf(10);
    a instanceof Number;//true
    a instanceof Integer;//true
    
  • ==super==

    和this一样,静态方法中也不能使用super关键字
    public Teacher(){
        super();//引用父类构造方法
    }
    super.toString();//引用父类方法
    
    
  • ==this==

    this 表示当前方法所属的类实例。静态方法中不能使用this。
    1. 引用属性,实例方法
    this.name = name;
    this.setName("name");
    2. 引用构造方法
    this("1","name")
    
  • ==strictfp==

    strictfp 修饰类,表示该类中的浮点数使用精确计算,如果希望准确计算,就用该关键字修饰类
    public strictfp Salary{}
    
  • ==throw==

    throw 出现在方法体中,表示执行到这时一定会抛出异常
    
  • ==throws==

    throws 出现在方法上,当检测到异常时才抛出
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352