视频学习资源:黑马程序员全套Java教程_Java基础入门教程,零基础小白自学Java必备教程_哔哩哔哩_bilibili
了解Java语法的第一行代码
public static void main(String []args)
:public
:表示的这个程序的访问权限,表示的是任何的场合可以被引用。static
: 表明方法是静态的,不依赖类的对象的,是属于类的,在类加载的时候 main() 方法也随着加载到内存中去。void main()
:方法是不需要返回值的。String[] args
:从控制台接收参数。
包
多级包的引入用.
分开
带包的Java编译与执行:手动建包、自动建包(javac -d filename.java
—>java package.filename
)
不import的话,把多级目录写全也可以用
访问控制修饰符
default
在同一包内可见public
对所有类可见protected
对同一包内的类和所有子类可见,不能修饰类)private
在同一类内可见—通过public get/set()进行外部访问和修改(可在方法内进行限制)
权限:public>default>private
非访问修饰符
static
:静态,被类的所有对象共享,可通过类名调用。静态成员方法只能访问静态成员。final
:修饰方法–不能被重写;修饰变量–不能再次被赋值(基本类型–数据值;引用类型–地址值);修饰类–不能被继承abstract
:抽象方法->抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。
变量类型
局部变量:在方法、构造方法或者语句块中定义的变量。栈内存,须赋值,随方法
类变量(静态变量):定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量(非静态变量):堆内存,有默认初始值,随对象
方法
定义:声明+方法体
方法重载:在同一个类中;方法名相同;参数类型或数量不同。与返回值类型无关
构造函数:每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认无参构造方法。在创建一个对象的时候,至少要调用一个构造方法。函数名与类名相同;无返回值类型;只有构造函数才能调用构造函数;
构造方法重载
创建对象:声明(名称+类型)->实例化(new)->初始化->通过已创建的对象来访问成员变量和成员方法
常用的类
vector<Object>
类
void add(int index,Object element)
——在此向量的指定位置插入指定的元素Object.get(int index)
返回此向量的第一个组件int size()
返回此向量中的组件数Object remove(int index)
移除此向量中指定位置的元素
java.io.File
boolean isFile() 判断当前路径是否是一个文件
String getName() 获取文件或文件夹的名称long length()
返回此抽象路径名定义的文件的长度
new File()
new Folder()
boolean exists() 判断指定路径的文件或文件夹是否存在
boolean delete() 删除文件或者删除单级文件夹
boolean createNewFile()
乱七八糟的小记录
For-Each循环:for (循环变量类型 循环变量名称 : 要被遍历的对象) 循环体hasNextInt()
判断输入值是否为数值toString()
方法用于返回以一个字符串表示的 Number 对象值
Java中Object类是所有类的父类
instanceof 判断一个对象是否属于一个类,返回布尔型
object1.equals(object2)判断是否引用的同一个对象
Iterator(迭代器)
IO
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));—>read()/readLine()
InputStream in=new FileInputStream(file);
this—修饰成员变量,形参与成员变量同名时。
super—只在子类中出现,三种用法:1.super.xxx获取父类中xxx的值; 2.super.xxx()调用父类中的xxx方法; 3.super()直接调用父类的构造函数。
API:应用程序编程接口
String
每一次new String()产生不同的对象(即使内容相同),而直接定义赋值会建立一个字符池,若定义两个内容一样的string依然是一个对象
使用==作比较时:基本类型—数据值;引用类型—地址值。
比较字符串内容—equals
获取字符串的每一个字符—charAt
长度—length
StringBuilder—append、reverse、toString
ArrayList—get、add、size、remove
内部类
可以直接访问外部类的成员,包括私有
外部类要访问内部类的成员,必须创建对象
成员内部类:Outer.Inner oi=new Outer().new Inner();
局部内部类:是在方法中定义的类,外界无法直接使用,需要在方法内创建对象并使用。
匿名内部类:实质是一个继承了该类或实现了该接口的子类匿名对象
1 | new 类名/接口名(){ |
没有构造方法时,不可new对象,若类的成员是静态的,则可直接通过类名调用。
Math类
abs()、pow()
System类
exit()、currentTimeMillis()
Object类
toString()、equals()
建议子类重写该方法,以实现更多。。
基本类型包装类:用于基本类型和字符串之间的相互转换
byte–Byte; short–Short; int–Integer; long–Long; float–Float; double–Double; char–Character; boolean–Boolean
Integer:
public static Integer valueOf(int i/ String s) s为数字组成的字符串
转换:String.valueOf()、Integer.parseInt()
装箱、拆箱
日期类
getTime()、setTime()
SimpleDateFormat—>y/M/d/H/m/s
public final String format(Date date)格式化
public Date parse(String source)解析
Calendar(抽象类)—>getInstance()(多态)
异常
Throwable—>Error/Exception
Exception—>RuntimeException(运行异常)/非~(编译异常)
程序出现问题时JVM默认终止程序并输出异常的名称、原因和位置。
1 | try{ |
getMessage(); toString(); printStackTrace()
方法名() throws 异常类名{}
自定义异常类:super(message); throw 异常对象名;
getMessage(); toString(); printStackTrace()
方法名() throws 异常类名{}
自定义异常类:super(message); throw 异常对象名;
public String substring(int beginIndex)public String substring(int beginIndex, int endIndex)
参数:
beginIndex – 起始索引(包括), 索引从 0 开始。
endIndex – 结束索引(!不包括!)。
继承
子类不能继承父类的私有成员
在子类方法中访问一个变量:子类方法中—>子类成员变量—>父类成员变量
子类初始化前先完成父类的初始化—>子类构造方法的第一句默认是super(),即默认访问父类的无参构造方法
通过子类对象访问一个方法:子类成员范围—>父类成员范围
方法重写:子类中出现和父类中一样的方法声明---@Override
检查
不可多继承,可多层继承
多态
条件:1.有继承或实现关系;2.有方法重写;3.有父类引用指向子类对象(向上转型)—>Father father=new Son()
。
弊端:不能实现子类的特有功能—>向下转型(强制转换)—Son son=(Son) father
抽象类
抽象方法(没有方法体)必须置于抽象类中;
抽象类不能实例化(有构造方法但是不可以直接调用)—>参照多态的方式,通过子类对象实例化(抽象类多态)
抽象类的子类要么重写抽象类中的所有抽象方法,要么自身为抽象类
接口
关键字interface:public interface 接口名{}
类实现接口implements:public class 类名 implements 接口名{}
接口不能实例化,通过实现类对象实例化—接口多态
接口的实现类要么重写接口中的所有抽象方法要么是抽象类
接口的成员变量默认public static final;没有构造方法,默认继承Object;成员方法默认public abstract
接口可以多继承