上一篇完成了环境的安装,配置以及入门级HelloWorld的编写
public class HelloWorld { public static void main(String[] args) { System.out.println("您好,小何。I‘m MMP"); } }在这段代码中,我们只是知道她打印了双引号里面的文字,哪些英文单词是我们自己定义的?哪些是所谓的Java关键字?
这篇文章,数据类型需要重点掌握,关键字也需要学习(循环,异常,修饰符【类,方法,变量】),今后工作这一篇章的东西都是拿来就用的,标记了【常用】最好都有印象。(1)数据类型有哪些?
(2)数据类型有什么用?
在代码编写的时候,我们需要定义很多的变量,变量的修饰就是靠上面的数据类型来定义,即告诉开发代码的人,我这个变量是什么类型(不知道该用什么类型的时候就用String)。
比如,设定年龄变量,一般都是整数,此时采用int;设定金钱,一般是double;设定性别,一般是String。
(3)数据类型怎么用?
下面展示常见的一个POJO【下一节讲的类】的定义:
public class Student { private int age; // 年龄 private String name; // 姓名 private Date birthday; // 生日 private boolean isBoy; // true 男 false 女 private double socre; // 分数 }
访问控制
private 【常用】
用来定义私有变量,在封装时会用到
一般不用来修饰类(内部类除外),系统会直接报错
public【常用】
公有,如果是工具类(就是不止这一个.java文件用到,别的类也经常调用)常用public修饰其方法
protected
同包同类中,可以自由访问protected成员
同包不同类中,无任何继承关系,可以自由访问protected成员
同包不同类中,具有继承关系,任何子类或者子类的子类都可以访问protected成员
不同包不同类中,不具有继承关系,不可以访问其它类protected成员
类,方法和变量修饰符
类,方法和变量修饰符
Abstract 抽象
不能被实例化(即不能有New...)只能被当做父类,且必须被继承,如果子类不是抽象类的话,就需要实现抽象父类的所有方法
abstract是说必须继承、重载
abstract和final不能同时修饰一个类
abstract只能修饰类,方法,不能修饰属性
抽象方法中不能指定程序体,即不能有{},参数表之后直接用 ; 结束
abstract方法所在的类必须是abstract类
extends 继承 【常用】
子类继承父类的属性,重载重写
interface Implements【常用】
接口,接口定义的方法只有定义没有实现,接口中定义的成员变量都是public static final,但不必写明,接口实质是特殊抽象类,里面只包含常量和抽象方法。
使用interface声明一个接口时,只能用public修饰符修饰
接口中的成员都有固定的修饰符
成员变量:public static final
成员方法:public abstract
new【常用】
new关键字,也用在创建对象时使用到
class 【常用】
类,class用来修饰类,其后面就是类名,最开头的HelloWorld就是类名
定义一个POJO就是定义一个类,接口也是一个类,这个概念可能上来不好理解,尤其是面对对象,随着慢慢学习,自己就悟出来了
static 【常用】
静态
它修饰的变量称之为静态变量(整个类共享),它修饰的方法叫做静态方法
通过类名.变量名或者对象.变量名来调用其静态变量
注意:静态变量更多的是使用类名去调用,非静态变量更多的是使用对象来调用
1 静态方法不能调用非静态变量(静态方法是随着类加载的时候被创建,但是成员变量创建对象的时候才被创建)
2 静态方法的生命周期是随着类加载开始到程序运行结束而销毁
3 静态方法创建时机与非静态方法的创建时机不同
4 静态方法可以调用非静态方法吗? 不可以
5 非静态方法可以调用非静态方法吗? 可以
6 Static方法中可以使用this关键字吗 ? 不可以
final
final是说不能继承、重载
修饰方法时,方法不能被重写,增强代码安全性
修饰类时,不能被继承,增强代码安全性
修饰属性时,interface里只存在public static final的常量,一次修改多次使用
程序控制
break
跳出循环,在switch case语句中常常在switch语句前加一个词,然后break精确到这个次即可跳出整个switch
Break直接跳出当前循环,执行循环后面的语句
continue
同样用在循环语句中,不同的是它是跳出本次循环开始下一次的循环,在他之后的语 句不再执行,是循环的迭 代
return【常用】
直接退出整个方法,返回一个对象或者数值,在任何地方都可以使用
do ...while
这个语句不管满不满足while里的条件都至少执行一次
while【常用】
如果不满足while里的语句将不执行
if ...else【常用】
循环语句,一般不超过三层,超过三层就用switch case替代
for【常用】
循环语句(在数组里有一个增强for循环)
switch ..case【常用】
记住在case下面添加break
Case 语句的常量与switch()中的变量一致 则执行该case所对应的语句
注意:switch(变量) 变量的类型 只能是byte short char int String(1.7及以上版本可用)enum
default
用在switch case 语句当中
异常处理(异常-文件里有详细论述)
try...cath 【常用】
try{ ......存放要捕获的语句 }catch(存放要捕获异常的种类,一般用Exception e,因为它是所有Exception的父类) { e.printStackTrace() //这句话可以输出异常的种类和具体位置 }throw 【常用】
throws 用在方法体声明之后
public void mul() throws Exception{ doSomething... }
throws【常用】
throw用在catch语句块中
public void mul() throws Exception{ try{ int i = 0; System.out.println(100 / i); }catch(ArithmeticException e){ e.printStackTrace(); throw e; } }
package 包相关 【常用】
包名就相当于文件夹名
class【常用】
类名就相当于文件名
import【常用】
引包,自动导包存在一定局限性,注意观察
基本类型【常用】
变量引用
super
对父类的引用,子类super(),里面无参的情况下会调用父类的无参方法,父类如果没写则会有默认的无参方法,如果写了有参构造方法,则子类在调用时会报错,需要在父类再写一个无参方法;super(4)类似这种有参的会先调用父类的有参方法再执行子类的方法[看是否重写,是就子类反之父类]
可以通过super.的方式可以调用父类中的方法以及属性
super不能作为参数传递
this
指代的当前对象
当前对象:当创建一个对象的时候使用该对象调用方法以及属性,这个时候该对象就称为当前对象
特点:
1 用来指代当前对象
2 this可以作为参数进行传递
3 通过this() 的方式可以来调用其它的构造方法,并且必须放在程序的第一行,并且不能同时调用两个构造方法
4 当再本类中调用属性及其方法的时候 如果没有异议 ,可以省略this
5 this可以区别成员变量和局部变量
void 【常用】
默认无返回类型,如果有return()语句,不能有void
保留字
goto
const
少用但仍是关键字
native
本地方法调用,调用的不是JAVA代码(一般涉及C)
instanceof
Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class-----false
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
确定对象所属的类 instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
transient
当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
enum
枚举
用法一:常量
用法二:case语句中