Linux
- 编译和运行
javac helloworld.java // 编译成字节码文件.class
java hellloworld
常量
final double PI = 3.14
字符串
字符串是常量,创建之后不能更改
String so = "abc"
String s = new String("abc")
- 两个字符串比较相等要用
equals()
s.equals(s1)
for循环
- 在增强for循环中不能修改集合,否则会出现并发修改异常
java.util.ConcurrentModificationException
public class ForEach {
public static void main(String[] args) {
int arr[]={1,2,99,3,4,5,10,5};
for(int a: arr){
System.out.println(a);
}
}
}
- ArrayList删除倒数第二个元素不会出现并发修改异常
- LinkedList删除倒数第一个元素和倒数第二个元素都不会出现并发修改异常
public class Main {
public static void main(String[] args) {
List<Integer> linkList = new LinkedList<>();
linkList.add(12);
linkList.add(42);
linkList.add(22);
/*LinkedList删除倒数第二个元素不会出现并发修改异常*/
for(Integer a: linkList) {
if(a == 42) linkList.remove(a);
System.out.println(a);
}
}
}
基础
- 区别于python的保留字
false,true,null
- 数组定义:
int maxn = 100;
int[] numbers = new int[maxn];
- java可以自增,python是不可以的。
- 数组的长度:注意没有小括号
numbers.length;
- 直接初始化数组
int [] scores ={99,123,23,1,4,5,66};
int[] b = a;
- 数组名只是数组的管理者,当制定给新数组时,表示两者都可以管理,所以一者改变,另一者取出的值也会改变。
- java定义变量后,编译器会自动初始化为0或者false
- 二维数组
int[][] data = new int[3][5];
int[][] score ={{1,2,3,4},{2,3,4},};
- 字符串
String str = "hello";
String[] s = {"AAA","BBB","ccc"};
- 字符类型
char c = 'A';
char d =(char)(c + 'a' - 'A');
- 基本类型
- byte 1字节
- char 2字节 -128~127
- int 4字节
- short 2字节
- float 4字节
- double 8字节
- boolean 1字节
- long 8字节
Character.isDigit('a');
Character.isLowerCase('I')
Character.toLowerCase('T')
- String
- 用加号可以连接字符串,当加号的另一边不是字符串时,系统会自动的将另一边转换为字符串类型
String s = new String('a string');
s.equals("bye");
- 字符串常用的函数
in.next()读入一个单词
in.nextLine()读入一整行
s.equals()来判断两个字符串的内容是否相同
s.length()获得字符串的长度
s.charAt(index)访问index的位置
s.substring(index)字串从index开始截取
s.substring(2,4)从2到4但是不含4
s.indexOf(‘4’)没找到则返回-1
s.trim()去除字符串两边空格
s.replace(c1,c2)用c1替换c2的内容
s.toLowerCase()把字符串改为小写
- 构造函数可以重载,但是没有返回值,函数名称必须与类名一样,如果没有写显示的构造函数,编译器会自动产生一个空的无形参构造函数。Java没有析构函数。
- 对象赋值时reference赋值(两者同为一个目标的管理者),而基本类型是直接值拷贝。
- 每个变量都是有生命周期的,它只能存储在离它最近的一对花括号中。
- JVM自动回收,垃圾回收器(Garbage collector)。
- 每个子类的构造函数的第一句话都默认调用父类的无参构造函数super()。
- 信息隐藏
单继承
class Human{
int height;
int weight;
public void eat() {
System.out.println("breadth of mind!");
}
}
public class man extends Human{
public void plough() { //耕田
}
public static void main(String[] args) {
man m = new man();
m.eat();
}
}
Java只能单继承:每个类只能继承一个类。
如果不写extends,Java都是默认继承java.lang.Object类。
子类继承父类所有的属性和方法,但不能直接访问private成员。
this代替构造函数,同一个类中的成员和方法。this(2,3),this.number,this.add(3,4)
信息隐藏:private中的set和get
抽象类
子类可以继承抽象类,但是一定要实现父类们所有abstract的方法,如果不能完全实现,那么子类也必须被定义为抽象类。
接口
如果类的所有方法都没有实现,那么这个类就算是接口interface
类只可以继承(extends)一个类,但是可以实现多个接口,继承和实现可以同时进行。
- extends必须写在implements前面
- 接口可以继承多个接口extends A,B{ }
public interface Animal{ }