美文网首页
JAVA基础(四)

JAVA基础(四)

作者: Roper_被注册 | 来源:发表于2018-06-18 15:55 被阅读0次

    形式参数和返回值问题

    形式参数
        类:需要的是该类的对象
        抽象类:需要的是抽象类子类对象
        接口:需要的是接口的子类对象
        
    返回值类型
    -   基本类型:返回什么就用什么接收;
        
    -   引用类型
        类:返回的是该类对象;
        抽象类:返回的是该类的子类对象
        接口:返回的是该接口子类的对象
    

    包的定义及注意事项

    • 包其实就是文件夹
    • 作用:对类进行分类管理、对类进行分类管理
    • 注意事项:
    1. package语句必须是程序第一条可执行代码
    2. package语句在一个java文件中只能有一个
    3. 如果没有package,默认表示无包名

    导包及注意事项

    导包的格式:import 包名;
    

    四种权限修饰符及其特点

    ' public protected 默认 private
    本类
    同一个包
    不同包子类
    不同包的其他类

    内部类的概述及访问特点

    把类定义在其他类内部,这个类就被称为内部类
    内部类可以直接访问外部类的成员,包括私有
    外部类要访问内部类的成员,必须创建对象
    

    内部类的分类

    根据定义的位置不同,分为
    
    1. 成员位置(成员内部类)
      创建对象:外部类名.内部类名 对象名=外部类名对象.内部类对象

    2. 局部位置(局部内部类)
      可以直接访问外部类的成员。可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能

    匿名内部类的格式和应用及面试题

    匿名内部类就是内部类的简化写法。必须存在一个类或者接口
    
    • 格式:new 类名或者接口名(){重写方法;}
    • 本质:是一个继承了类或者实现了接口的子类匿名对象。列如Android中的new onclicklistener(){onclick(){}}

    面试题:

    按照要求,补齐代码
        interface Inter { void show(); }
        class Outer { //补齐代码 }
        class OuterDemo {
            public static void main(String[] args) {
                  Outer.method().show();
              }
        }
    要求在控制台输出”HelloWorld”
    
    class Outer{
        public static Inter method() {
            return new Inter() {
                public void show() {
                    System.out.println("我是内部类");
                }
            };
            
        }
        
    }
    

    API常用类

    • Object/Scanner
    • String/StringBuffer/StringBuilder
    • 数组高级和Arrays类
    • 基本类型包装类(Interger,Character)
    • 正则表达式(Pettern,Matcher)
    • Math/Random/System
    • BigInteger/BigDecimal
    • Date/DateFormat/Calendar

    Object类

    类层次结构的根类
    所有类都直接或者间接地继承自该类
    
    • 构造方法
      public Object()

    Scanner类

    JDK5以后用于获取用户的键盘输入
    
    • 构造方法:
      public Scanner(InputStream source)
    • 基本格式
      hasNextXXX() 判断是否还有下一个输入项
      nextXXX() 获取下一个输入项

    String类

    字符串是由多个字符组成的一串数据
    字符串可以看成是字符数组
    字符串是常量,它的值在创建之后不能更改
    例如:String s="hello";s+="world";s结果是helloworld
    

    String类的判断功能

    1. boolean equals(Object obj)
    2. boolean equalsIgnoreCase(String str) //忽略大小写判断相等
    3. boolean contains(String str) //判断是否包含指定的char序列
    4. boolean startsWith(String str) //确定此字符串实例的开头是否与指定的字符串匹配。
    5. boolean endsWith(String str) //测试字符串是否以指定的后缀结束。
    6. boolean isEmpty() //判断是否为空,但是字符串为null时会报错

    String类的获取功能

    1. int length() //获取字符串长度
    2. char charAt(int index) //检索特定索引下的字符
    3. int indexOf(int ch) //参数第一次出现的位置。
    4. int indexOf(String str)
    5. int indexOf(int ch,int fromIndex) //返回再次字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
    6. int indexOf(String str,int fromIndex)
    7. String substring(int start) //截获字符串
    8. String substring(int start,int end)

    String类练习

    1. 把数组中的数据按照指定个格式拼接成一个字符串
      举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3]
      public static void string(){
      int[] arr= {1,2,3};
      String result="";
      for(int i=0;i<arr.length;i++) {
      result += arr[i];
      result +=",";
      }
      System.out.println(result
      .replace(" ","")
      .replace("1","[1")
      .replace("3,","3]")
      );
      }

    2. 字符串反转
      举例:键盘录入”abc” 输出结果:”cba”
      StringBuffer buffer=new StringBuffer("abd");
      buffer.reverse();
      system.out.println(buffer)

    3. 统计大串中小串出现的次数
      举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次

      String chuang="woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
      String java="java";
      int count=0;//定义一个统计变量
      int index=chuang.indexOf(java);//获取一次"JAVA在这里大串中第一次出现的索引
      while((index=chuang.indexOf(java))!=-1) {//如果索引值是-1,则说明不存在。是1则统计变量++
      chuang=chuang.substring(index+java.length());//是1就记录一次,把刚才索引小串的长度作为起始位置截取原始大串,得到一个新的字符串。
      count++;
      }
      System.out.println(count);
      }

    面试题

    String s = new String(“hello”)和String s = “hello”;的区别?
    前者要创建两个对象,后者创建1个对象
    

    StringBuffer类

    StringBuffer类概述:
    我们如果对字符串进行拼接操作,每次拼接都会构建一个新的String对象,耗时又浪费空间。所以使用StringBuffer可以解决这个问题,它是线程安全的可变字符串序列;
    

    StringBuffer的功能

    • 添加功能
      public StringBuffer append(String str)
      public StringBuffer insert(int offset,String str)
    • 删除功能
      public StringBuffer deleteCharAt(int index)
      public StringBuffer delete(int start,int end)
    • 替换功能
      public StringBuffer replace(int start,int end,String str)
    • 反转功能
      public StringBuffer reverse()
    • 截取功能
      public String substring(int start)
      public String substring(int start,int end)

    面试题:

    • String,StringBuffer,StringBuilder的区别
      String是常量创建就不能更改,后两者是变量;
      StringBuffer进行字符串拼接操作,不需要每次创建一个新的对象
      StringBuffer线程安全。StringBuilder线程不安全。
      StringBuffer适用于单线程下载字符缓冲区进行大量操作
      StringBuilder适用于多线程下字符缓冲区进行大量操作

    • StringBuffer和数组的区别
      StringBuffer是用于进行在字符缓冲区进行大量操作的类。
      数组是用于存储数据的数据结构。

    数组高级(排序和查找)

    排序

    • 冒泡排序
      相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。

    • 选择排序
      从0索引开始,因此和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处。

    查找

    • 基本查找~~数组元素无序
    • 二分查找~~数组元素有序

    练习:

    把字符串中的字符进行排序。
    举例:”dacgebf”
    结果:”abcdefg”
    class Select{
         public static String sort(String str){
                //利用toCharArray可将字符串转换为char型的数组
                char[] s1 = str.toCharArray();
                for(int i=0;i<s1.length;i++){
                    for(int j=0;j<i;j++){
                        if(s1[i]<s1[j]){
                            char temp = s1[i];
                            s1[i] = s1[j];
                            s1[j] = temp;
                        }
                    }
                }
                //再次将字符数组转换为字符串,也可以直接利用String.valueOf(s1)转换
                String st = new String(s1);
                return st;
            }
    }
    

    Integer类

    Interger类在对象中包装了一个进本类型int的值,该类提供了很多方法,能在int类型和String类型之间互相转换,还提供了处理int类型时非常游泳的其他一些常量和方法
    
    • Interger类成员方法:
      int类型和String类型的相互转换
      int – String
      String – int

      public int intValue()
      public static int parseInt(String s)
      public static String toString(int i)
      public static Integer valueOf(int i)
      public static Integer valueOf(String s)

    • 常用的基本进制转换
      public static String toBinaryString(int i)
      public static String toOctalString(int i)
      public static String toHexString(int i)
      十进制到其他进制
      public static String toString(int i,int radix)
      其他进制到十进制
      public static int parseInt(String s,int radix)

    Interger面试题:

    Integer i = 1; i += 1;做了哪些事情
    
    1. Integer i = 1;进行了自动装箱,原句为Integer i = new Interger(1);
    2. i += 1;进行了自动拆箱。通过intValue方法

    相关文章

      网友评论

          本文标题:JAVA基础(四)

          本文链接:https://www.haomeiwen.com/subject/kduneftx.html