java基础知识06


1.字符串的最大特点:一旦初始化就不可被改变

         String常见操作:1.获取

                                              1.1字符串中的包含的字符数,也就是字符串的长度。

                                                            int   length();  获取长度

                                               1.2根据位置获取位置上某个字符

                                                            char    charAt(int index);

                                               1.3根据字符获取该字符在字符串中位置

                                                             int indexOf(int ch) ; 返回的是ch在字符串中第一次出现的位置

                                                             int  indexOf(int ch,int fromIndex); 从fromIndex指定位置开始获取ch在字幕中出现的位置

                                                             int indexOf(String str);

                                                             int  indexOf(String  str,int  fromIndex);

                                                             int  lastIndexOf(String str);

                                      2.判断:

                                                2.1字符串中是否包含某一个字符串      boolean  contains(str);

                                                2.2字符串中是否有内容                        boolean  isEmpty();  原理是判断长度是否为0

                                                2.3字符串是否是以指定的内容开头       boolean startWith(str)

                                                2.4字符串是否是以指定的内容结尾        boolean  endsWith(str)

                                                2.5判断字符串的内容是否相同,复写了Object类中的equals方法。  boolean  equals(str)

                                                2.6判断内容是否相同,并忽略大小写     boolean  equalsIgnoreCase();

                                       3.转换

                                                3.1将字符数组转成字符串

                                                                  1.构造方法:String(char【】)

                                                                                       String (char【】,offSet,count)将字符数组中的一部分转成字符串

                                                                   2.静态方法:static String copyValueOf(char【】)

                                                                                        static  String  valueOf(char【】)

                                                3.2将字符串转成字符数组  char【】  toCharArray();

                                                3.3将字节数组转成字符串           String(byte【】);String(byte【】,offSet,count);

                                                3.4 将字符串转成字节数组  byte【】 getBytes();

                                       4.替换       String  replace(oldchar,newchar);参数可以使字符或者字符串

                                       5.切割    String【】  split(regex);            regex为切割符

                                       6.字串,获取字符串中的一部分

                                                 String    subString(begin)  ;

                                                  String     subString(begin,end);  包含头,不包含尾

                                      7.转换,去除空格,比较

                                                    7.1字符串转成大写或者小写          String   toUpperCase();       String   toLowerCase();

                                                    7.2将字符串两端的多个空格去除           String  trim();

                                                    7.3对两个字符串进行自然顺序的比较       int  compareTo(str);

2.StringBuffer是字符串缓冲区,是一个容器,而且长度是可以变化的,可以直接操作多个数据类型,最终会通过toString方法变成字符串

              C  create               U   update         R read                   D delete

            1.存储          StringBuffer     append();               StringBuffer      insert(index,数据);

            2.删除          StringBuffer     delete(start,end);   

                                StringBuffer    delete(index);删除指定位置的字符         

                                sb.delete(0,sb.length());清空缓冲区

            3.获取

                    char   charAt(int  index);       int  indexOf(String  str);    int  lastIndexOf(String  str);      int  length();

             4.修改          StringBuffer   replace(start,end,String  str);

                                 void   setCharAt(int   index, char  ch);

             5.反转        StringBuffer      reverse();

             6.将缓冲区中的指定数据存储到指定的数组中去

                       void  getChars(int  srcBegin,int   srcEnd,  char[]  dst,  int  dstBegin);

           JDK1.5 版本之后出现了StringBuffer.      StringBuffer是线程同步,StringBuilder是线程不同步。功能都一样。以后开发,建议使用StringBuilder           升级三个因素:1.提高效率    2.简化书写     3.提高安全性

3.基本数据类型对象包装类的最常见的作用,就是用于基本数据类型和字符串类型之间做转换

            基本类型转成字符串:    1.基本数据类型+“”    2.基本数据类型.toString(基本数据类型值)   如Integer.toString(34);把整数34变成“34”

            字符串类型转成基本数据类型:  xxx   a  = Xxx.parseXxx(String)    如:  int   a = Integer.parseInt(“15”);

            十进制转成其他进制:  to  BinaryString();        to  HexString();   to  OctalString();

             其他进制转成十进制:  parseInt(String,radix);

             JDK1.5出现的新特性:自动装箱和自动拆箱

                       Integer      m  = 128;   

                       Integer       n  = 128;

                        sop(“m=n:”+(m==n));          结果为false

                      Integer      a  = 127;   

                       Integer       b  = 127;

                        sop(“a=b:”+(a==b));          结果为true

                    因为a和b指向了同一个Integer对象,当数值在byte范围内时,对于新特性,如果该数值已存在,则不会再开辟新的空间

4.集合类  

          List :元素是有序的,元素可以重复,因为该集合体系有索引

                    ArrayList:底层的数据结构使用的是数组结构,特点:查询速度很快,但是增删稍慢,线程不同步

                    LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢

                    Vector:底层是数组数据结构,线程同步,被ArrayList替代了

         Set:元素是无序的,元素不可以重复

         枚举是Vector特有的取出方式,其实枚举和迭代是一样的,因为枚举的名称以及方法的名称都过长,所以被迭代器取代了,枚举郁郁而终了

            编程:使用LinkedList模拟一个堆栈或者队列数据结构  ,堆栈:先进后出       队列:先进先出 

                         

                  Set集合的功能和Collections的功能是一致的。 

             Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复

                         HashSet:底层数据结构式哈希表

                   HashSet存储自定义对象,见以下程序:

               

             HashSet是如何保证元素唯一性的呢?

                             是通过元素的两个方法,hashCode()和equals()来完成,如果元素的HashCode值相同,才会判断equals是否为true,如果元素的HashCode不同,才会调用equals。

                 注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法。

             TreeSet:可以对Set集合中的元素进行排序,底层数据结构式二叉树。

                              保证元素唯一性的依据,compareTo方法   return  0;

                          TreeSet排序的第一种方式,让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法,这种方式也成为元素的自然顺序,或者叫做默认顺序

                         需求:(第一中排序方式)往TreeSet集合中存储自定义对象学生,想按照学生的年龄进行排序

                     

              记住:排序时,当主要条件相同时,一定要判断次要条件。

             TreeSet的第二种排序方式: 当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性,在集合初始              化时,就有了比较方式;

                           定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。

               当两种排序都存在时,以比较器为主。。

              定义一个类,实现Comparator接口,覆盖compare方法。

                                 编程:按照字符串长度排序,字符串本身具备比较性,但是它的比较方式不是所需要的,这时就只能使用比较器

5.泛型:jdk1.5版本以后出现的新特性,用于解决类型安全问题,是一个安全机制。

           好处:1.将运行时期出现的问题,ClassCastException转移到了编译时期,方便于程序员解决问题,让运行事情问题减少,安全。

                      2.避免了强制转换麻烦

6.Map集合:该集合存储键值对,一对一对往里存,而且要保证键的唯一性。

              1.添加:   put(K  key , V  value)

                                putAll(Map<? extends  K,  ?  extends  V>  m)

               2.删除   clear ();                remove(Object  key);

               3.判断  containsValue(Object  value)    ;   containsKey(Object  key)  ;    isEmpty();

               4.获取    get(Object  key) ;        size();        values();

                Hashtable:底层是哈希表数据结构,不可以存入null键null值,该集合 是线程同步的,jdk1.0  效率低

                HashMap:底层是哈希表数据结构,并可以存入null键和null值,该集合是不同步的,jdk1.2效率高

                TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序

                和Set很像,其实Set底层就是使用了Map集合。

            map集合的两种取出方式:

                          1.Set<K>  keySet: 将map中所有的键存入到Set集合,因为Set具备迭代器,所以可以迭代方式取出所有的键,再根据get方法,获取                                每一个键对应的值。

                                Map集合的取出原理:将Map集合转成Set集合,再通过迭代器取出

                       

                          2.Set<Map.entry<K,V>>  entrySet  :将Map集合中的映射关系存入到Set集合中,而这个关系的数据类型就是Map.entry。                                              

                Map.Entry:其实Entry也是一个接口,它是Map接口中的一个内部接口。

                 编程:            asfdfg........:获取该字符串中的字母出现次数

                                    

              Map扩展:学校有多个教室,每个教室有多个学生

6.集合框架的工具类  Collections:

                                 sort ();  max(); binarySearch();fill(); replaceAll(); reverse();reverse  Order();

     用于操作数组的工具类:Arrays,里面都是静态方法

                                  asList();将数组变成List集合

                                              把数组编程List集合的好处:可以使用集合的思想和方法来操作数组中的元素;

                                              注意:将数组变成集合,不可以使用集合的增删方法,因为数组的长度固定。如果增删,会发生不支持操作异常

                                             如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。

                                             如果数组中的元素都是基本数据类型,那么会将该数组作为集合 中的元素存在。

         集合变成数组:Collection接口中的toArray方法

                        

7.高级for循环:格式     for(数据类型    变量名 :被遍历的集合或者数组)

8.对集合进行遍历,只能获取元素,但是不能对集合进行操作。迭代器出了遍历,还可以remove集合中元素的操作,如果使用ListIterator,还可以在遍历过程中对集合进行增删       改查的操作

9.jdk1.5版本出现的新特性:可变参数

                 

10、API中的其他类:

           1.System:类中的方法和属性都是静态的          Out  :标准输出              In():标准输入,默认是键盘

                获取系统属性信息:                Properties        pro  =  System.getProperties();

                                 

           2.Runtime  对象

                    

                 3. Date  

                 4.Calendar

                  5.Math:     ceil();       floor();        round();              

                                       random();       返回带正号的double值,该值大于等于0.0且小于1.0,返回值是一个伪随机选择的数

                   6.Random                nextInt();

      



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值