打开终端,输⼊
在终端将上述代码存放到 Hello.java 中,使⽤ javac Hello.java 编译代码,⽣成⼀个Hello.class ⽂件,接着使⽤ java Hello 来运⾏程序。
Java 源程序与编译型运⾏区别
基础语法
看⼀个简单的类:
这个类描述了小狗,属性包含:名字、颜⾊和年龄,类⾥⾯的函数称为⽅法。
类中包含了⼀个 static 的静态⽅法,可以⾃动执⾏,不需要对象调用。
this 关键字:
当实例变量和局部变量重名,JAVA平台会按照先局部变量、后实例变量的顺序寻找。
如果使⽤this.name,则不会在⽅法(局部变量)中寻找变量name,而是直接去实例变量中去寻找。
当实例变量和局部变量名字不重复时,可以不使⽤ this,编译器会⾃动加上 this。
⼀般构造函数 public 可加可不加。如果加上 public,就代表此类可以对外开放,其他的类可以继承它,外部也可以实例化该对象;如果不加 public,则默认的修饰词是protected,代表只对同包开放。
import java.io.* // 导入java_installation/java/io下的所有类
Java 为每⼀个内置数据类型都提供了对应的
包装类:Float, Double, Boolean, Byte, Short, Integer, Long, Character.
java Math类:
Java ⽀持四种不同的访问权限:
static
静态变量:static 关键字⽤来声明独⽴于对象的静态变量,⽆论⼀个类实例化多少对象,它的静态变量只有⼀份拷⻉。
静态函数:static 关键字⽤来声明独⽴于对象的静态⽅法。静态⽅法不能使⽤类的⾮静态变量。
注意:在静态⽅法中调⽤⾮静态⽅法时,编译器会报错(因为⾮静态⽅法只有实例化的对象能够调⽤, 而静态⽅法执⾏的过程中未调⽤构造函数实例化对象,因此不允许调⽤!)
解决办法为要么创建⼀个类的对象,通过对象来调⽤函数,要么将⾮静态⽅法声明中加上 static 改为静态⽅法,同时将变量声明为全局静态的。
final
被 final 修饰的实例变量必须显式指定初始值,之后不能再修改。
函数 System.identityHashCode(str) 可以打印出字符串 str 地址对应的哈希值
使⽤ String str = “xxxxx”; 声明的字符串存储在公共池⾥,存储字符串内容相同的字符串变量 相当于引⽤;
使⽤ new String(“xxxx”); 得到的字符串地址在堆内,每次 new 得到的对象地址不同;
格式化字符串:String.format(str, args)
String 类使⽤静态⽅法 format() 返回⼀个String 对象
字符索引查询: indexOf()
字符串分割:split()
子串:substring()
⽐较函数: equals
填补⼀个⼤坑: equals ⽐较的是内容是否相等、 == ⽐较的是引⽤的变量地址是否相等。
StrngBuilder 和 StringBuffer 类的对象⽀持多次的 ,而且并且不产⽣新的未使⽤对象!
常⽤函数的语法如下(StringBuilder 和 StringBuffer 的使⽤⽅法⼏乎相同):
举个例⼦:
输出的结果为:
数组的访问与修改:
可以使⽤ Arrays 类的函数来对数组操作:
⼀个⽅法包含了 修饰符、返回值类型 、方法名 、参数 和 ⽅法体 构成。
在不创建类对象的情况下,主函数可以调⽤静态⽅法:
可变参数的声明⽅式为:
typeName... parameterName
举个例⼦:
此处传⼊的参数有很多个,可以像数组⼀样来访问传⼊的参数。
java.util 包提供了 Date 类来封装当前的⽇期和时间,可以 new ⼀个 Date 对象:
Thread.sleep(1000) 休眠 1000ms
System.currentTimeMillis() 获取毫秒数
Java 提供了 Scannner 类,可以设置参数来从键盘读取数据,创建 Scanner 对象如下:
输⼊字符串的⽅式有两种:
next()
下⾯的程序对输⼊的所有数字求和,当输⼊不是 double 类型时(如字符串),程序会终⽌。
使⽤ try-catch 来捕获 异常:
可以有多个 catch 来捕获不同类型的错误;不论是否存在异常, finall 关键字中的语句都会被执 ⾏。输出结果为:
Java 提供了⼀系列的存储数据结构和相应的算法,各种容器由 Collections 继承而来,算法可以通过 Collections 类来调⽤;容器的创建⽅法如下:
ArrayList 类是⼀个可以动态修改的数组,与普通数组的区别就是它是没有固定⼤小的限制;
Stack 常⽤的⽅法有: boolean empty() , E push() , E pop() , E peek()
除此之外,Java 还有 Vector , LinkList , Queue , Dictionary 等常⽤容器。