java基础知识总结

xiaoxiao2024-04-15  23

一、java 基础语法

if-else for while break 用于跳出for,while,do while,switch, 其他情况下不能使用 continue 跳过本次循环, 继续下次循环

switch case 在每一句case 后必须有break 结束。不然case 一直执行到有break 终止 , 多个case 可以并在一起使用。 为避免逻辑错误发生,default 一般写在最后面。

数组是引用类型,创建多维数组时, 必须指明第一维的大小

类型转换: boolean 不可以转换 数据类型转换( 容量小的自动向容量大的转换)

质数:只能能被1 和他本身整除的数

二、字符串 String s1=new String("abc"); String s="aa"; 1.单独使用"" 引号创建的字符串都是常量, 编译期就已经确定存储到String Pool . 2. 使用new String("") 创建的对象会存储到heap, 是运行期新创建的 . 3. 使用只包含常量的字符串连接符如"aa" + "aa" 创建的也是常量, 编译期就能确定, 已经确定存储到String Pool.( 编译器做了优化 .) 4. 使用包含变量的字符串连接符如"aa" + s1 创建的对象是运行期才创建的, 存储在heap . 5. 使用"aa" + s1 以及new String("aa" + s1) 形式创建的对象是否加入到String Pool 中我不太确定 6.s1 调用intern() 方法将heap 中的s1 放入String pool 1. String s1 = new String("abc") ; String s2 = new String("abc") ; 上面创建了几个String 对象 ? 答案:3,"abc" 在编译期Constant Pool 中创建1,new String()s1 在运行期时heap 中创建 . s1s2 地址不等, 但是内容相等 String 类重写了Object 中的equals 方法( 根据字符串内容比较 ) 2.

String s1 = "s1"; String s2 = s1; s2 = "s2"; s1 指向的对象中的字符串是什么 ? 答案: "s1"

三、面向对象程序设计OOP

使用new 关键字创建对象的三个作用 1. 为对象实例分配内存空间 2. 调用构造函数 3. 返回对象实例的引用

面向对象核心: everything is object 面向对象特征:封装 继承 多态

3. 代码执行步骤 1) 调用方法执行步骤 1 )为被调用方法分配临时存储空间(栈空间) 2 )实参值赋给形参 3 )程序流程跳到被调用方法中执行

4 )被调用方法完成程序流程跳回主调用方法并带回返回值(如果有的话),同时被调用方法的临时空间被释放。

2) 创建对象的步骤(1 )递归构造父类对象 (2) 分配内存空间 (3 )初始化属性(4 ) 调用本类构造方法

3)Java Test 命令的执行步骤:(1 )启动JVM2 )找到Test.class3 )加载Test.class4Test.main() 类执行入口 面向对象三大特点: 封装, 继承, 多态 1 、封装 主要是指隐藏(private 关键字修饰)本类某些属性,可提供getXX/setXX 方法供外部类读或写数据。

setXX 方法中可以检测输入数据是否合法。读方法仅仅供外部类查看属性值。

2 、继承 父类派生子类 同类型事物子类扩展父类, 子类继承父类所有东西 : 私有方法不可继承

私有属性可继承但不可用构造不可继承( 子类构造默认调用父类构造 ) java 支持单继承,java.lang.Object 是每个类的根类 < 为每个类添加无参构造, 无参构造只有在类没有显示提供任何构造方法时系统提供, 否则, 系统不提供 > 访问权限修饰符:( 仅编译时有效 ) private 仅本类可用 default( 默认不写), 本类, 本包可用 protected 本包, 本类, 不同包继承子类可用 . public 本类, 本包, 子类, 不同包可用 . 子类继承父类方法后子类方法权限不可变小, 抛出异常类型不能变大( 是本类或其子类 ) 继承的优点: 1 )提高代码复用,减少代码冗余。 2 )为多态提供理论基础。 重写:方法名,参数列表,返回值类型与重写前的都要一致。 重写仅发生在父类与子类之间。 子类方法不能缩小父类方法的访问权限 子类方法不能抛出比父类方法更多的异常 存在于父类和子类之间 重写父类方法可以使子类功能更强大更完整。 方法的重写Overriding 和重载OverloadingJava 多态性的不同表现。 重写Overriding 是父类与子类之间多态性的一种表现,重载Overloading 是一个类中多态性的一种表现。

重载方法名时参数类型、个数、顺序至少有一个不相同 不能重载只有返回值不同的方法名(方法调用会混淆) 存在于父类和子类、同类中

3 、多态 父类引用指向子类对象。编译时父类引用,运行时子类对象。 好处:为参数传递提供统一的父类引用。 父类引用不能直接调用子类附件的属性和方法,需强制类型转换后才可以调用。 强制类型转化之前用instanceof 判断父类引用是不是指向一个具体子类对象,若是,则可以强制转化为子类引用。否则编译器报错。 多态思想三要素 1 、继承 2 、重写 3 、父类引用指向子类对象

java 中参数传递遵循值传递原则:基本属性类型传递该数据值本身, 引用类型传递该对象的引用的具体地址,而非对象本身。 父类引用--> 子类引用, 转化前需判断是否同质(instanceof), 不同质则不允许强制转化 优点: 利用父类提供统一编程.

关键字: 1 this/super 分别指本类对象和父类对象。 this(XX) (调用当前对象构造方法) super(XX) (调用父类对象构造方法) 两者只能用于构造方法第一行,并最多出现一次。因此this(XX)/super(XX) 不能同时出现在构造方法中。 this/super . 运算符分别调用本类方法和父类方法。

2static 修饰变量和方法 static 属性类加载时分配在静态池中,归整个类所有。 static 方法类加载时执行一次,归所有对象共同所有。 static 属性和方法均建议通过类名+. 运算符调用。

3 final final 修饰类,该类不能被继承,该类所有方法不能被重写。 final 修饰变量,指final 后变量引用不能改变,但是赋值可以通过构造方法传参的形式改变,因此final+ 变量不能称之为常量。 常量定义方式为private static final int num=0; 定义就要赋值。 final 修饰方法,该方法不能被重写。父类非final 方法可以重写为final 方法。 final 关键字的作用 final 是一个常量,相当与c++ const final 定义的变量只能赋值一次(显示初始化或在构造方法中赋值)不能再次改变值。 final 定义的类,不能再次被继承 final 的方法不能被子类重写

4 abstract 抽象类,未实现的类。 抽象类不能被实例化。 子类继承抽象类,并重写父类抽象方法。不然子类也是抽象类。 含有抽象方法的类一定要定义为抽象类,抽象类不一定含有抽象方法。 抽象类主要用于定义规范和统一编程。 抽象类: 抽取子类共性, 定义一种规范 抽象类不能实例化, 但可以作为编译时类型 包含抽象方法的类一定要声明为抽象类, 抽象类不一定含有抽象方法( 可以有实现的方法)

接口 100% 纯抽象类 接口是一种特殊的抽象类, 定义一种规范 接口中变量为static final 的常量 接口中方法为public abstract, 实现接口方法必需修饰为public 类可以实现implements 多个接口 equals目的是判别对象内容是否相等(判断对象间是否相等的逻辑方法) Object 类中equals 方法是根据对象地址比较的,因此需重写equals 方法 根据对象比较标准重写equals 方法,public boolean equals(Object obj)

java.lang.object 类方法

注:构造方法不能手工调用,在对象的生命周期内构造方法只调用一次。

容量大的转换容量小的要加强制类型符号

多种数据类型转换时候,系统首先将所有数据类型转化为最大的哪一种数据类型 浮点默认为double 整型默认为 int byte,short,char->int->long->float->double

相关资源:java基础知识总结(超级经典)
转载请注明原文地址: https://www.6miu.com/read-5014994.html

最新回复(0)