打好基础,加油加油加油!
前言
为了方便自己回顾知识和弥补学习漏洞,特此开个帖子记录一下
day1(6.16test,7.2)
-
HashMap能够保证其中元素的顺序?错
解释:hashmap是无序的 -
BufferedReader 的readLine()是用于字符流进行按行读取的
该方法可能抛出IOException异常,调用该方法时通常应将它放在try块中,并通过catch块处理异常;当读到流的末尾,该方法返回的结果为null
map能存进多个值,但不可以存取重复值,只会存入第二个
import java.util.*;
public class TestMap{
public static void main(String[] args){
Map map=new HashMap( );
map.put(“first","football");
map.put(“first","basketball");
System.out.print(map.get(“first"));
//输出basketball
}
}
list:有序,可重复,有索引
set:无序,不重复,无索引
map:无序,不重复,无索引
4.整型数据类型中,需要内存空间最少的是byte类型
5.创建对象时必须先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象
6.重载与重写
重载:一个类中定义多个想同名的方法
- 要求:
①方法名同,但形参列表(个数、类型、顺序)不同;
②与返回值类型、访问修饰符无关 - 误区更正
//两个方法没有区别;只是参数名不同,不能构成重载
public void m(int a){}
public void m(int b){}
重写
- 方法名同,形参同,返回值同;访问修饰符可同,或更宽泛
- 重写父类方法后,调用时优先执行子类重写后的方法
数组在堆区,堆区有默认值0
public class Person{
static int arr[] = new int[5];//数组在堆区,堆区有默认值0
public static void main(String a[]) {
System.out.println(arr[0]);
//输出0
}
}
Boolean b=null;
//这是个包装数据类型,声明出来的是类,因此可以为null
包装类:基本数据类型所对应的引用数据类型
- 默认值为null
- 可以调用方法
- 声明的数需要±*/则用基本数据类型;当需要存储时,则用包装类
9.static
静态属性(类属性)、静态方法(类方法)
- 在全类中只有一个,不因创建多个对象而产生多份
- 不必创建对象,可直接通过类名访问
- 静态方法在方法区,所有对象共享一份(要少用,慎用,因空间有限)
class ClassDemo {
public static int sum=1; //声明静态变量
//public int sum=1; //demo1.sum 输出6
public ClassDemo() {
sum = sum + 5;
}
}
public class ClassDemoTest{
public static void main(String args[]) {
ClassDemo demo1=new ClassDemo(); //1+5
ClassDemo demo2=new ClassDemo();//6+5
System.out.println(demo1.sum);//此时sum为11
}
}
10.泛型的优点
不用向下强制类型转换
11.java运行机制
javac hello.java #先编译
java hello #(默认已加class) #后执行
jdk包括jre
jdk:开发者工具包
jre:java运行时环境
javac:编译器
java:执行器
12.迭代器的next()方法将返回集合中的/下一个元素.
13.使用流式套接字编程时,为了向对方发送数据,则需要使用getOutputStream()
14.== 与equals的区别
==比较堆区地址;equals比较内容,但需要重写
15.两个对象的 hashCode() 相同,但 equals() 不一定为true.
不一定一样,只算内容,不算顺序
hashcode()即哈希值(根据内容的具体值算出来的)
map1.put(23,43);
map2.put(43,23);
16.构造器不能被重写
17.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会被执行,先执行finally,再执行return块
public static int add(){
try{
return 1;
}finally{
return 2;
}
}//最后结果返回2
day2(7.3)
学习java树的第一天,复习一下java基础吧!整理一下自己的知识漏洞!~
java运行机制
1.ClassLoader 是 JVM 实现的一部分
解释:ClassLoader从上到下bootstrap,extension,system,custom,当需要加载类时,从下往上询问,父加载器可以加载则父加载器加载,不能则由子加载器加载(双亲委派机制)
2.Java 虚拟机逐行读取并执行Java代码 错
解释:JVM无法直接读取java代码,需要先编译后解码再读取
java虚拟机就是JVM,它只能在不同平台上运行相对应的字节码文件,也就是.class文件,并不能直接运行java代码
3.包含关系:JDK(java开发工具包)>JRE(java运行时环境)>JVM(java虚拟机), 其中, JDK = JRE + Java编译工具,JRE = JVM + Java核心类库
java关键字
下面代码中哪个不是Java的关键字或保留字:
static main public int
import java.io.*;
public class App {
public static void main(String[] args) {
int main = 1024;
System.out.println("Hello World");
}
}
main不是关键字
解释:main不是关键字,但main作为方法名时会被编译器识别为程序的主入口,算是一个系统“保留方法名“吧,jvm会从main函数开始执行语句。
变量定义
正确定义变量
var x=3.14;//是对的,适用于jdk10
float x;
错误定义变量:
x=new Int(4);
解释:在jdk10中,var x = 3.14 是支持的。在jdk10中,var表示模糊定义。
Java中,并没有Int这个类型,只有基本类型int和包装类型Integer,并且int也是不能够通过new出来的。只有引用类型才能够通过new关键字创建。
String x ="1111";//对
string x="222";//错
解释:String 引用类型 java 区分大小写,没有string类型
常量定义
final var x=100;//对
const int value =100;//错
解释:final:java中声明常量的
const是Java的一个保留关键字,没有实际意义,但是不能用于做变量名。
var:自适应变量,会根据右边的类型自适应类型
7.4
IndexOutFoundException:索引越界异常
FileNotFound:文件找不到
NullPointerException:空指针异常
IO:读写文件异常
接口与抽象类区别:
3.break、continue、return的作用
4.short s1=1;s1=s1+1;会报错
数组和String都有length():
7.6
定义一个函数,查找给定值x在数组 array 中的索引位置,如果没有找到,返回-1 :
public int findln(int[] array,int x){
for(int i=0;i<array.length;i++){
if(array[i]==x){
return i;
}
}
return -1;
}
//错误答案:?为什么错
public int findln(int[] array,int x){
for(int i=0;i<array.length;i++){
if(array[i]==x){
return i;
}else{
return -1;
}
}
}
总结
以上就是自己的一些查缺补漏啦,打好基础,坚持记录,相信总有一天会有收获的!