Java入门13

d10

String

  • 常量
  • 字符串池中
  • “abc”+“def”
  • 字符集就是编码,charset
  • IDE下的默认字符集设置的就是项目的编码,和字符集是一个概念.
  • 字符集:字符和数字的对照表
GB2312 中文字符集
GBK GB2312加强版
Big-5 繁体字符集
iso-8859-1 西欧码表
utf-8 国际化编码,可以表示任意文字
			gbk
ascii < 	big-5		< utf-8
			iso-8859-1

  • 字符集在计算机中unicode码
c = '\u0098';
c = '中'
  • 乱码过程
string str = "a中b";
str.getBytes();
  • 字符串编解码
编码:把字符串变成字节数组
str -----> byte,str.getBytes()
解码:byte[] ---->str

  • 字符在内存中都是unicode码

String,StringBuffer与StringBuilder的区别??

StringBuffer 字符串缓冲区

1.字符串缓冲区
2.mutable 可变的
3.java.lang.AbstractStringBuilder 继承与 java.lang.StringBuffer

public class StringBufferDe {
    public static void main(String[] args){
        StringBuffer buffer = new StringBuffer();
        for(int i = 1 ; i <= 100 ; i ++){
            buffer.append(i);
        }
        System.out.println(buffer.toString());
    }
}

在这里插入图片描述
buffer.append 数组增加

    public synchronized StringBuffer append(String var1) {
        this.toStringCache = null;
        super.append(var1);
        return this;
    }

buffer.delete 删除 前包后不包

    public synchronized StringBuffer delete(int var1, int var2) {
        this.toStringCache = null;
        super.delete(var1, var2);
        return this;
    }

buffer.insert 插入
offset:偏移量

    public synchronized StringBuffer insert(int var1, String var2) {
        this.toStringCache = null;
        super.insert(var1, var2);
        return this;
    }

buffer.reverse

    public synchronized StringBuffer reverse() {
        this.toStringCache = null;
        super.reverse();
        return this;
    }
public class t11 {
    public static void main(String[] args){
        try{
            StringBuffer buffer = new StringBuffer();
            buffer.append("abc中国人def");
            buffer.delete(4,6);                 // 前包后不包

            //offset:偏移量
            buffer.insert(0,"tom");

            //
            System.out.println(buffer.substring(0,3));
            System.out.println(buffer.reverse());
            System.out.println(buffer);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

StringBuilder 字符串构建器

------------------------------

  1. 字符串构建器
  2. mutable可变的
  3. java.lang.AbstractStringBuilder{char[ ] value}
  4. 线程不安全

Builder模式

java设计模式
---------------
Idea中生成set get中的快捷方法
在这里插入图片描述
---------------
传统方式:
---------------

public class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setSex(boolean sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public boolean isSex() {
        return sex;
    }

    private boolean sex;
    //...


}
public class BuilderDemo {
    public static void main(String[] args){
        Person p =new Person();
        p.setName("atom");
        p.setAge(12);
        p.setSex(true);
    }
}

================================
---------------------
Builder模式 构建器模式 方法链编程
---------------------

    public Person setName(String name) {
        this.name = name;
        return this;
    }

    public Person setAge(int age) {
        this.age = age;
        return this;
    }

    public Person setSex(boolean sex) {
        this.sex = sex;
        return this;
    }
        Person p =new Person()
                .setName("tom")
                .setAge(12)
                .setSex(true);
    StringBuilder builder = new StringBuilder();
    builder.append("t")
            .append("o")
            .append("m");
    }
}

java基本数据类型

包装类.wrapper

在这里插入代码片

数字

byte
short
int 
long
float
double

boolean

Boolean

char

character

========================

public class wrapperDemo {
    public static void main(String[] args) {
        Byte b = new Byte((byte)12);
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
        
        Short s = new Short((short)12);
        Integer i = new Integer(12);
        
        Long  l = new Long(12);
        float f = new Float(12);
        Boolean bb = new Boolean(true);
        bb.booleanValue();
    }
}

------------------------
基本类型和包装类区别

  • 基本类(数值类型)有默认值0
  • 包装类默认null
  • 基本类型无法表达空的概念
  • 基本类型不是对象
  • 包装类是对象
  • 基本类型可以直接参与运算int i = 5 ,j = 7 i+j;
  • 包装类是对象,不能参与运算
Interger a = new Interager(12);
Interger b = new Interager(13);
a.intValue() + b.intValue()

------------------------

自动拆箱 自动装箱(jdk1.5以后)

装箱:将基本数据类型自动转变成包装类对象
拆箱:包装类----->基本数据类型auto

数组

  • 元素类型必须相同(基本和引用都可以以)
  • 长度固定
  • 地址连续
  • 通过下标访问,0基址
  • null指针异常/索引越界异常
  • 长度固定

集合

  • 容器
  • 长度可变
  • 只能存储对象
  • 元素类型可以不同

Collection接口有两个子接口:
List(列表),set(集)
LIst:可以存放重复元素,元素的存取是有序的
Set:不可以存放重复元素,元素的存取是无序的.

List 列表

在这里插入图片描述
ArrayList和LinkedList的区别

ArrayList:查询快 一般添加删除慢

LInkLsit:查询慢 一般添加删除快
可以存放重复元素
有序的
ArrayList 通过下标定位
	读快(查询快)
	写慢
	list.add(...)
	list.get(int index)
	list.remove(int index);
	list.clear();

HashSet//线程不安全
HashMap//线程不安全

在这里插入图片描述

import org.w3c.dom.ls.LSInput;

import java.util.ArrayList;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {
        List<String> List = new ArrayList<>();
        System.out.println(List.size());

        List.add("tom1");
        List.add("tom2");
        List.add("tom3");
        List.add("tomsa");
        List.add("tom5");
        List.add("tom6");
        List.add("tom7");

        //元素的个数
        System.out.println(List.size());
        //得到索引
        System.out.println(List.get(0));
        //遍历List
        for(int i = 0 ; i < List.size();i ++){
            System.out.println(List.get(i));
        }
        System.out.println("==========================================");
        //插入 牵一发动全身
        List.add(0,"tom0");
        //删除
        List.remove(List.size()-1);
        List.clear();//删除整个列表
        System.out.println(List.get(0));
        //遍历List
        for(int i = 0 ; i < List.size();i ++){
            System.out.println(List.get(i));
        }
    
        List<String> list2 = null;
        List<String> lsit3 = new ArrayList<>();
        System.out.println(List.indexOf("tomsa"));
    }
}

        //迭代器访问集合
        Iterator<String> it = List.iterator();
        while (it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }

=============================================

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class PersonDemo {
    public static void main(String[] args) {
        List<Person> list = new ArrayList<Person>();
        Person p = new Person();
        for(int i = 0 ;i < 1000; i++){
            p = new Person();
            p.setName("tom" + i);
            p.setAge(i % 100);
            list.add(p);
        }

        //迭代器遍历
        Iterator<Person> it = list.iterator();
        while (it.hasNext()){
            Person p0 = it.next();
            System.out.println("Person{"+p0.getName()+","+p0.getAge());
        }
    }
}

在这里插入图片描述
=================================
LinkedList 链表
通过手拉手实现对象的引用
存储数据快,查询慢

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class LinkdeListDemo {
    public static void main(String[] args) {
        List<String> list = new LinkedList<String>();
        list.add("tom");
        list.add(0,"alise");
        list.add("bbb");

/*
        for(int i = 0; i < list.size() ; i ++){
            System.out.println(list.get(i));
        }
*/
        //迭代器遍历
        Iterator<String> list0 = list.listIterator();
        while (list0.hasNext()){ 
            String str =list0.next();
            System.out.println(str);
        }



    }
}

================================

public class StringDemo {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "abc";
        
        System.out.println(s1 ==s2);
        
        
        
        String s3 = new String("abc");
        String s4 = new String("abc");
        
        System.out.println(s3 == s4);
        System.out.println(s3.equals(s4));
        
    }
}

在这里插入图片描述
=============================
***********迭代器***************
=============================

取出集合中元素的一种方式
因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器

注意

在Collection中是通用的,替代了Vector中的Enumeration(枚举)
next方法是向下自动取元素,避免出现NoSuchElementExecption
next方法返回类型是Object,注意类型转换

Set

在这里插入图片描述

  • 元素不能重复
  • 元素存储是无序的
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetDemo {
    public static void main(String[] args) {
        //hash:散列,去重复
        Set<String> set = new HashSet<String>();
        set.add("tom");
        set.add("tom");
        set.add("tom1");
        set.add("tom");
        set.add("tom2");

        System.out.println(set.size());

        for(Iterator<String> it = set.iterator() ; it.hasNext();){
            System.out.println(it.next());
        }

    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oifengo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值