为了让大家更容易学习,本文整理分享100个初学者必记的Java知识点。由于文章篇幅,先分享前50篇,干货满满。建议先收藏起来~1.编写:编写的Java代码保存在以“.java”结尾的源文件中。2、编译:使用javac.exe命令编译java源文件生成字节码文件。格式:javac源文件名.java3。运行:使用java.exe命令解释并运行字节码文件。格式:java类名4、一个java源文件中可以声明多个类,但最多只能声明一个类为public,声明为public的类的类名必须与源文件名相同。5.java关键字中的字母全部小写6.Java命名规范:包名:由多个单词组成时,字母全部小写:xxxyyyzzz类名、接口名:由多个单词组成时,全部首字母单词大写:XxxYyyZzz变量名、方法名:由多个单词组成时,第一个单词首字母小写,第二个单词开头每个单词首字母大写:xxxYyyZzz常量名:所有字母是大写的。当有多个单词时,每个单词用下划线连接:XXX_YYY_ZZZ7、字符串属于一个类,属于引用数据类型8、在类体中,声明在方法体之外的变量称为成员变量。9.在方法体内声明的变量称为局部变量。除了形参外,局部变量在使用前需要显式初始化。(形参也是局部变量)10、Java整型常量默认为int类型,声明long类型常量后必须加'l'或'L'。11、Java的浮点常量默认为double类型,声明一个float常量,在其后加上'f'或'F'。12、Java中所有的字符都使用Unicode编码。一个字符可以存储一个字母和一个汉字,所以java中的char类型是两个字节。13.布尔类型数据只允许值为true和false,不允许为null。不可能使用0或非零整数来代替false和true。Java虚拟机没有任何专用于布尔值的字节码指令。Java语言表达式操作的布尔值编译后在java虚拟机中被int数据类型代替:true用1表示,false用0表示。14、虽然long类型是8个字节,float是4个字节,但是float类型是以科学计数法存储的,所以float类型的存储范围比long类型大。15、自动类型转换:将小容量的类型自动转换为大容量的数据类型。byte、short、char之间不相互转换,计算时先将这三个转换为int类型。16、强制类型转换:将容量大的数据类型转换为容量小的数据类型,但可能会导致精度降低或溢出。17、字符串不能直接转换为基本类型,但是可以通过基本类型对应的包装类实现字符串到基本类型的转换。18、计算机底层以二进制补码的形式存储数据。19、正数(最高位为0)的原码、反码、补码相同,负数(最高位为1)的补码为其反码+1。20.赋值运算符:=+=-=*=/=%=,运算结果不会改变变量本身的数据类型。短i=i+1;由于常量“1”默认为int类型,编译时会报错。使用shorti+=1会在不改变数据类型的情况下达到+1的效果。21、&和&&、|的区别和||:&&和||具有短路功能。左边的条件是否为真,右边的条件不用判断。不管什么情况,&和|必须判断所有条件。22.位运算:位运算符对整数数据进行运算。(左移运算符)<<:在一定范围内,每一位左移相当于*2(右移运算符)>>:在一定范围内,每一位右移相当于/223.Flow控制:顺序结构:程序自上而下执行。分支结构:if-else,switch-case循环结构:for,while,do-while24。数组是引用数据类型变量,但数组的元素既可以是基本数据类型,也可以是引用数据类型。25、数组的长度一旦确定,就不能修改。初始化完成后,长度固定。26、数组静态初始化:数组元素的初始化和数组元素的赋值是同时进行的。例如:inta[]=newint[]{1,2,3};27、数组动态初始化:数组元素的初始化和数组元素的赋值是分开进行的。例如:intb[]=newint[5];b[0]=1;28、数组元素的默认初始化值:整型:0浮点型:0.0字符型:0or'\u0000',非'0'布尔型:false引用数据类型:null29.关键字break和continue可以与标签一起使用(类似于C语言中的goto语句)breaklabel;//以指定标签结束一层循环结构。continuelabel;//结束指定标签的一层循环结构的当前循环。30.Object-orientedvsProcess-orientedProcess-oriented:强调的是功能行为,以功能为最小单位,如何去做。面向对象:强调对象有功能,以类/对象为最小单位,考虑谁来做。31、面向对象中的两个重要概念:类:对一类事物的描述,是一种抽象的、概念性的定义instance)32.虚拟机栈就是通常提到的栈结构。局部变量存储在栈结构中;新的结构(如:数组、对象)被加载到堆空间中。补充:对象的属性(非静态成员变量)也是在堆空间加载的。intarr[]=newarr[],以等号“=”为界,左边是存放在栈中的局部变量,右边是new的机制,存放在堆中。方法区:类加载信息、常量池、静态域33、“属性”与“变量”的区别:①类中声明的不同属性:直接定义在类中的一对{}中。局部变量:在方法、方法参数、代码块、构造函数参数和构造函数中声明的变量。②关于权限修饰符的不同属性:在声明属性时,指定其权限并使用权限修饰符。常见的权限修饰符:private、public、default、protected—>体现在封装上。局部变量:不允许使用权限修饰符。③默认初始化值属性的情况:类的属性,根据其类型,有一个默认的初始化值。整数(byte,short,int,long:0),浮点数(float,double:0.0),字符(char:0(or'\u0000')),布尔值(boolean:false),引用数据类型(class,array,interface:null)localvariable:无默认初始化值。这意味着我们必须在调用局部变量之前显式地赋值。特别是:调用形参的时候,我们可以给它赋值。④加载到内存的Location属性:加载到堆空间(非静态)。局部变量:装入栈空间。34.如果方法没有返回值,“return;”表示结束该方法。35、封装思想的具体代码体现:36、权限修饰符的范围:37.4种权限可以用来修饰类的内部结构:属性、方法、构造函数、内部类。如果修改类,只能使用:default,public。38、如果类的构造函数没有显式定义,系统会默认提供一个空参数的构造函数。39、一个类中定义的多个构造函数相互构成重载。40.一旦我们显式定义了类的构造函数,系统就不再提供默认的空参数构造函数。41.在一个类中,至少会有一个构造函数。42.this可以理解为:当前对象或当前正在创建的对象。43、可以显式使用“this(参数列表)”方法调用本类中指定的其他构造函数,但构造函数不能通过“this(参数列表)”方法调用自身(死循环)。44.规定:"this(参数列表)"必须声明在当前构造函数的第一行,构造函数内部可以推出,最多只能声明一个"this(参数列表)"来调用其他构造函数。45、如果使用的类或接口定义在java.lang包下,导入结构可以省略。使用“xxx.*”表示可以调用xxx包下的所有结构。但是如果你使用的是xxx子包下的结构,还是需要显式导入。46.一个类可以被多个子类继承(一个父亲可以有多个儿子),但是一个类只能有一个父类(一个儿子只能有一个亲生父亲)47.子类继承后有什么区别父类?一旦子类A继承了父类B,子类A就获得了父类B中声明的所有属性和方法。特别是对于在父类中声明为private的属性或方法,子类继承父类后,它仍然获得父类中的私有结构。只是因为封装性(私有权限修饰符)的影响,子类不能直接调用父类的结构体。子类继承父类后,也可以声明自己特有的属性或方法:实现功能的扩展。48、子类直接继承的父类称为:直接父类。间接继承的父类称为:间接父类。子类继承父类后,获得在直接父类和所有间接父类中声明的属性和方法。49.如果一个类的父类没有显式声明,那么这个类继承自java.lang.Object类。50.方法重写(override或overwrite)。子类继承父类后,可以重写父类中同名同参数的方法。
