目录
基础语法
8种数据类型
变量
常量
字符串
StringBuilder
方法(函数)
输入
输出
数组
二维数组
面向对象
类的定义
创建对象实例
final
继承
super
抽象类
接口
随笔
byte、short、int、long、float、double、char、boolean
byte、short、int、long 四种基本数据类型表示整数
long类型的使用:long num = 1L;,一般使用大写 L,为了避免小写 l 与数值 1 混淆。
float 和 double 类型表示浮点数,即可以表示小数部分。
需要注意的是 float 类型的数值后面需要加上 F 或 f,否则会被当成 double 类型处理。
double 类型的数值可以加上 D 或 d,也可以不加。
char 类型用于表示单个字符。
需要将字符用单引号括起来char a = 'a'或char a = 97或char a = '\u0061'(16进制)。
boolean 类型用于表示真值 true或者假值 false
Java 中布尔值不能和整数类型或者其它类型互相转换。
int a = 1
final double PI = 3.14; 加个final就行
两种写法
String 变量名 = "abc";
String 变量名 = new String("abc");
一些方法
字符串.length() 获取字符串长度
a字符串.equals(b字符串) 比较两个字符串是否相同
a变量.equalsIgnoreCase(b变量) 比较两个字符串是否相同(忽略大小写)
注:“==”比较的是两个对象在内存中存储的地址是否一样
a变量.concat(b变量) 或 "a"+"b"; 字符串的连接
变量.charAt(索引值) 获取当前字符索引位的单字符
indexOf(字符) 搜索字符第一次出现的索引
indexOf(字符串) 搜索字符串第一次出现的索引
lastIndexOf(字符) 搜索字符最后一次出现的索引
lastIndexOf(字符串) 搜索字符串最后一次出现的索引
substring(索引值) 提取从位置索引开始到结束的字符串
substring(起始索引, 末位索引) 提取索引之间的字符串部分
trim() 返回一个前后不含任何空格的调用字符串的副本
在Java中,String被认为是不可变的,这意味着一旦创建了一个String对象,你将无法更改它的值,所以可以使用StringBuilder
StringBuilder a = new StringBuilder(容量长度(整数));
如果不写容量长度则默认为16
如果写字符串则长度为16+字符串长度
如果后续超出容量长度的话会自动扩展
一些方法
deleteCharAt(索引值) 删除索引位的字符
indexOf() 同上
capacity() 返回当前容量
charAt(索引值) 同上
toString() 返回string类型
public static void functionName(Object arg) {
System.out.println("Hello World.");
}
public:公共访问级别,被声明为public的成员可以在任何地方访问。
protected:受保护访问级别,被声明为protected的成员可以在同一个包中的任何类中访问,以及被该类的子类访问。
private:私有访问级别,被声明为private的成员只能在声明它的类中访问。
省略(default):也称为默认访问级别,默认访问级别是指在成员声明时没有指定任何访问修饰符。只能在同一个包中访问,不能在其他包中访问。
static:打上static使其可以被调用
先引入:import java.util.Scanner;
Scanner in = new Scanner(System.in);
String a=in.nextLine();
String b=in.nextLine();
9大输入方法
nextBoolean(); 接收bool
nextByte(); 接收byte型整数
nextShort(); 接收short型整数
nextInt(); 接收int型整数
nextLong(); 接收long型整数
nextFloat(); 接收float型整数
nextDouble(); 接收double型整数
next(); 只可输入不带空格的字符串,读取到空格则停止
nextLine(); 读取一整行输入
其他方法
haxNext("字符串") 如果是则返回true,如果不是则返回false
close() 关闭输入
3大输出方法
System.out.print() 转换成字符串输出
System.out.println() 输出完成后执行换行
System.out.printf() 跟C语言输出一样
两种定义方法
int [] ages = {12,18,9,33,45,60};
int [] symbol = new int[10];
注:int [] a1 = {1,2,3};
int [] a2;
a2 = a1;
此时a2和a1为同一个数组,只是为a1多赋了一个引用,a2只是a1数组的不同名称
两种定义方法
数据类型 [][] 数组名 = new 数据类型[行的个数][列的个数];
数据类型 [][] 数组名 = {
{第一行值1,第一行值2,...}
{第二行值1,第二行值2,...}
}
类(人类)
对象(小明,小张)
属性(生命值,防御力)
方法(行为,函数,吃饭,喝水)
public class People {
int age; //年龄
void laugh(){
System.out.println("我在笑!");
}
}
People a = new People();
Object object1 = new Object();
Object object2 = object1;
object1和object2同样是同一个对象
final 关键字可以修饰类、方法、属性和变量
final 修饰类,则该类不允许被继承,为最终类
final 修饰方法,则该方法不允许被覆盖(重写)
final 修饰属性:则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)
final 修饰变量,则该变量的值只能赋一次值,即常量
如:
public final static String SHI_YAN_LOU="shiyanlou";
class 子类 extends 父类
父类拥有子类的全部方法和属性(除开 private 方法和属性)
super 关键字在子类内部使用,代表父类对象。
访问父类的属性 super.属性名。
访问父类的方法 super.bark()。
子类构造方法需要调用父类的构造方法时,在子类的构造方法体里最前面的位置:super()。
public abstract class TelePhone {
public abstract void call(); //抽象方法,打电话
public abstract void message(); //抽象方法,发短信
}
类似于先有模板,后通过覆盖增添内容
接口用于描述类所具有的功能,而不提供功能的实现,功能的实现需要写在实现接口的类中,并且该类必须实现接口中所有的未实现方法。
修饰符 interface 接口名称 [extends 其他的接口名] {
// 声明变量
// 抽象方法
}
1.
public class abcs {
public static class People { //将People透露给abcs,使其内部可以使用
public void laugh(){ //只有People实例可以调用
System.out.println("我在笑!");
}
}
public static void main(String[] args) {
People a = new People(); //获得People使用权
a.laugh(); //实例调用laugh方法
}
}
2.
public class abcs {
public static class People { //将People暴露给abcs,使其内部可以使用
public static void laugh(){ //使laugh暴露在外,使People可以直接调用laugh
System.out.println("我在笑!");
}
}
public static void main(String[] args) {
People.laugh();
}
}
3.
public class abcs {
public class People { //abcs内部无权调用,只可从外部往内调用
public void laugh(){
System.out.println("我在笑!");
}
}
public static void main(String[] args) {
People b = new abcs().new People(); //先实例abcs 再实例People
b.laugh();
}
}
4.
public class abcs {
public static void main(String[] args) {
abcs p = new abcs();
p.tt();
}
public void tt(){ //没有static,abcs内部无权直接调用
System.out.println("pp");
}
}
5.
//文件1
public class abcs {
public static void main(String[] args) {
abc p = new abc(); //可跨文件调用public类
p.laugh();
}
}
//文件2
public class abc {
public void laugh(){
System.out.println("我在笑!dsg");
}
}
6.
//文件1
public class abcs {
public static void main(String[] args) {
abc.laugh();
}
}
//文件2
public class abc {
public static void laugh(){
System.out.println("我在笑!dsg");
}
}
7.
class Animal {
public void bark() {
System.out.println("动物叫!");
}
}
class Dog extends Animal {
public void bark() {
System.out.println("汪、汪、汪!");
}
}
public class abcs {
public static void main(String[] args) {
Animal a = new Animal();
Animal b = new Dog(); //父类创子类实例,子类实例优先级更高
a.bark();
b.bark(); //“汪,汪,汪” ,只能调用二者共有函数
}
}