Java入门【面经整理】

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);
        }

    }
}

基础

  1. 区别于python的保留字false,true,null
  2. 数组定义:
int maxn = 100;
int[] numbers = new int[maxn];
  1. java可以自增,python是不可以的。
  2. 数组的长度:注意没有小括号
numbers.length;
  1. 直接初始化数组
int [] scores ={99,123,23,1,4,5,66};
int[] b = a;
  • 数组名只是数组的管理者,当制定给新数组时,表示两者都可以管理,所以一者改变,另一者取出的值也会改变。
  1. java定义变量后,编译器会自动初始化为0或者false
  2. 二维数组
int[][] data = new int[3][5];
int[][] score ={{1,2,3,4},{2,3,4},};
  1. 字符串
String str = "hello";
String[] s = {"AAA","BBB","ccc"};
  1. 字符类型
char c = 'A';
char d =(char)(c + 'a' - 'A');
  1. 基本类型
  • 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')
  1. String
  • 用加号可以连接字符串,当加号的另一边不是字符串时,系统会自动的将另一边转换为字符串类型
String s = new String('a string');
s.equals("bye");
  1. 字符串常用的函数
in.next()读入一个单词
in.nextLine()读入一整行
s.equals()来判断两个字符串的内容是否相同
s.length()获得字符串的长度
s.charAt(index)访问index的位置
s.substring(index)字串从index开始截取
s.substring(2,4)24但是不含4
s.indexOf(4)没找到则返回-1
s.trim()去除字符串两边空格
s.replace(c1,c2)用c1替换c2的内容
s.toLowerCase()把字符串改为小写
  1. 构造函数可以重载,但是没有返回值,函数名称必须与类名一样,如果没有写显示的构造函数,编译器会自动产生一个空的无形参构造函数。Java没有析构函数。
  2. 对象赋值时reference赋值(两者同为一个目标的管理者),而基本类型是直接值拷贝。
  3. 每个变量都是有生命周期的,它只能存储在离它最近的一对花括号中。
  4. JVM自动回收,垃圾回收器(Garbage collector)。
  5. 每个子类的构造函数的第一句话都默认调用父类的无参构造函数super()。
  6. 信息隐藏

单继承

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{ }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值