Java基础总结(二)

一、开始的唠叨

上篇里相对重要的是面向抽象与面向接口的编程,二者都体现了开闭原则。

本期继续回顾Java中的基础知识。

二、学习笔记

(一)内部类与异常类

1.内部类:

  • 内部类的外嵌类的成员变量在内部中仍然有效,内部类中的方法也可以调用外嵌类中的方法
  • 内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象作为外嵌类的成员。
  • 内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。

值得一提的是内部类编译后的格式,代码如下:

public class A {
class B{

}
}

则编译后的字节码文件名字格式为:

2.匿名类:

  • 匿名类可以继承或者重写父类的方法
  • 匿名类一定是内部类
  • 匿名类可以访问外嵌类中的成员变量和方法,不可以声明static
  • 创建匿名类时直接使用父类的构造方法

3.异常类:一般的IDE工具都会提示“此处应有异常”,系统自带的异常就不多说了。唯一值得注意的是try部分一旦发生异常,就会立刻结束执行,转而执行catch部分。

来看看如何自定义异常:

定义一个异常类继承Exception类

public class TotalException extends Exception{
    public String warnMess(){
        return "有毒";
    }
}

在可能产生异常的方法名中throws自定义的异常类,并在具体的方法体重throw一个自定义异常的实例

public class Count {
public void count (int a) throws TotalException{
    if(a==10){
        throw new TotalException();
    }
}

在使用该方法时包裹try-catch语句

    public static void main(String[] args)  {
        Count c=new Count();
        try {
            c.count(10);
        } catch (TotalException e) {
            System.out.println(e.warnMess());
        }
    }

4.断言:assert用于代码调试阶段,当程序不准备通过捕获异常来处理错误时就可以使用断言。

定义一个断言(表达式为true时继续执行,false则从断言处终端执行)

int a=10;
assert a!=10:"a不可是10";

Java解释器默认关闭断言语句,要用-ea命令手动开启

(二)常用实用类

1.String:

重要方法:

String (char a[])//由字符数组构造
public int length()//获取长度
public boolean equals(String s)//是否有相同实体
public boolean startsWith(String s)//是否以s开头
public boolean endsWith(String s)//是否以s结尾
public int compareTo(String s)//比较
public boolean contains(String s)//是否包含s
public int indexOf(String s)//s首次出现的索引
public String substring(int startpoint)//截取
public String trim()//删除空格

来看一个经典的equals与==的问题:

public static void main(String[] args) {
    String a=new String("1111");
    String b=new String("1111");
    System.out.println(a.equals(b));
    System.out.println(a==b);
    a="1111";
    b="1111";
    System.out.println(a.equals(b));
    System.out.println(a==b);
    }

输出结果为:true false true true,可见equals方法比较当前字符串对象的实体是否与参数指定的实体相同,而==比较的则是引用是否相同。

2.正则表达式:正则表达式很强大,是一个必须掌握的大坑。元字符表直接百度百科。下面给出一个在Java中使用正则表达式的例子:

    public static void main(String[] args) {
        String regex="[a-zA-Z]+";
        String in="dhasdd4alidhskjl";
        if(in.matches(regex)){
            System.out.println("全是英文字母");
        }else{
            System.out.println("不全是英文字母");
        }
    }

3.Date:Date可以获取当前时间,一般情况下需要格式化

public static void main(String[] args) {
        DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date=new Date();
        System.out.println(df.format(date));
    }

4.Math:封装了一系列 数学方法

5.Class:传说中的Java反射技术

先用Class.forName(Sting s)法获取Apple类的class

再利用class对象调用newInstance()方法实例化Apple类的对象

  public static void main(String[] args) {
        try {
            Class clazz=Class.forName("Apple");
            Apple apple=(Apple)clazz.newInstance();
            apple.setNumber(1);
            System.out.println(apple.getNumber());
            Apple apple2=new Apple();
            Class class1=apple2.getClass();
            System.out.println(class1.getName());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

三、结束的唠叨

以前看大神的博客还没什么感觉,现在自己开始写了才发现困难重重。

目前为止,我写博客的主要目的是便于自己的知识巩固,写的很散,属于把一本书上的内容根据自己的短板超浓度压缩。

所以有什么地方看不懂绝对不是你的问题,欢迎讨论。

时间: 2024-12-13 08:05:48

Java基础总结(二)的相关文章

java 基础(二)

java 基础(二)java 基础(二) 2016-2-1 by Damon 61. 编写多线程程序有几种实现方式 Java 5以前实现多线程有两种实现方法:一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活. 补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的

Java基础十二--多态是成员的特点

Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println(f.num);//是父类,答案是3 2,成员函数(非静态). 编译看左边,运行看右边. 因为成员函数存在覆盖特性. Fu f = new Zi();//f.show();输出的是子类里面的show方法 3,静态函数. 编译和运行都看左边. 静态函数不具备多态性,多态性是对象的多态性,然后静态函数不涉

java基础(二章)

java基础(二章) 一,变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则 l  必须以字母.下划线 _ .美元符号 $ 开头 l  变量中,可以包括数字 l  变量中,不能出现特殊的符号,空格 l  java中的关键字(红色字体),不能做变量名 3.变量命名,遵循 骆驼命名法(变量由1个以上的单词组成,第1个单词首字母小写,后面单词的首字母大写) 二, 数据类型 a)        数字(整型int(整数).双精度浮点型double(小数)) b)        字符型(c

Java Web 学习笔记 第三章 java基础(二)

第三章 java基础(二) 一.转义符 转义字符是"\",通过转义字符,可表示一些特殊的字符. 例如: '\n'  表示回车 '\t'   表示 制表符字符,一个制表符表示向右跳8-10个字符 '\\'   表示\ '\''   表示单引号 '\"'  表示双引号 "\u4e2d"表示unicode编码对应的字符(汉字:中). 二.布尔类型的概念和用法 boolean 类型用来表示肯定或否定两种可能. boolean 常用在分支语句.循环语句中. true

Java基础知识(二)

1,字符串 new String("abc")创建了几个对象? 一个或两个,如果常量池中原来有"abc",则只创建一个对象:如果常量池中原来没有字符串"abc",那么就会创建两个对象. String s="abc"; String s1="ab"+"c"; System.out.println(s==s1); 输出 true ,因为"ab"+"c"

黑马程序员——Java基础语法(二)---流程控制

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 本文主要介绍java基础语法中的流程控制,流程控制是我们写出灵活代码的基础.常见的流程控制主要有四类:判断结构.选择结构.循环结构.其他控制结构 一.判断结构 判断结构的标志是if语句,if语句主要有三种表现形式: 1.if(条件表达式) { 执行语句 } 注意: 1.如果if语句中只有一条语句,那么可以不写大括号.不过初学者一定要写括号,以免出错. 2.如果if语句没写大括号,if就只能控制

Java 基础(二)| 使用 lambad 表达式的正确姿势

前言 为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握 lambda 表达式,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 lambda 表达式 Java8 是我们使用最广泛的稳定 Java 版本,lambda 就是其中最引人瞩目的新特性.lambda 是一种闭包,它允许把函数当做参数来使用,是面向函数式编程的思想,可以使代码看起来更加简洁.是不是听得一脸懵逼?我举个栗子你就明白了. 烂掉牙的例子,在没有 lambda

Java基础知识二次学习-- 第一章 java基础

基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一章  JAVA简介 时间:2017年4月24日10:23:32 章节:01章_02节 内容:jdk的配置与安装 完成情况:已经完成,cmd中javac提示出相关命令 时间:2017年4月24日10:30:39 章节:01章_04节 内容:输出HelloWorld 完成情况: 已经完成 javac先将

Java基础知识二次学习-- 第二章 基础语法与递归补充

第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下划线,$,数字组成,应该由字母,下划线$开头,同时应该避开java保留字符 变量是内存中的一小块区域,使用变量名来访问这块区域 执行过程中的内存管理(疑问:这里的内存和Jvm的一样吗?) code segment 存放代码 data segment 静态变量 字符串常量 stack 栈 局部变量 h

黑马程序员——Java基础---IO(二)---IO字节流、流操作规律

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------   字节流 一.概述 1.字节流和字符流的基本操作是相同的,但字节流还可以操作其他媒体文件. 2.由于媒体文件数据中都是以字节存储的,所以,字节流对象可直接对媒体文件的数据写入到文件中,而可以不用再进行刷流动作. 3.读写字节流:Inpu