JAVA基础(四)

形式参数和返回值问题

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

包的定义及注意事项

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

推荐阅读更多精彩内容