常用类与基础API
1.常用类与基础 API-String 的理解与不可变性1.概述String:字符串,使用一对””引起来表示。 1.1String声明为final的,不可被继承 1.2 String实现了Serializable接口:表示字符串是支持序列化的。 1.3 实现了Comparable接口:表示String可以比较大小 1.4 String内部定义了final char[] value用于存储字符串数据 (jdk9开始变byte[]了) 1.5 通过字面量的方式(区别于new给一个字符串赋值,此时的字符串值声明在字符串常量池中)。 1.6 字符串常量池中是不会存储相同内容(使用String类的equals()比较,返回true)的字符串的。 2.不可变性2.1...
多线程
1.多线程-程序、进程、线程与并行、并发的概念1.程序(programm)概念:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。 2.进程(process)概念:程序的一次执行过程,或是正在运行的一个程序。说明:进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域 3.线程(thread)概念:进程可进一步细化为线程,是一个程序内部的一条执行路径。说明:线程作为调度和执行的单位,每个线程拥独立的运行栈和程序计数器(pc),线程切换的开销小。 ...
异常处理
1.异常处理-异常的概述与常见异常的举例1.异常的体系结构java.lang.Throwable |—–java.lang.Error:一般不编写针对性的代码进行处理。 |—–java.lang.Exception:可以进行异常的处理 |——编译时异常(checked) |—–IOException |—–FileNotFoundException |—–ClassNotFoundException |——运行时异常(unchecked,RuntimeException) |—–NullPointerException |—–ArrayIndexOutOfBoundsException |—–ClassCastException |—–NumberFormatException |—–InputMismatchException...
面向对象高级篇
1.面向对象(高级)-抽象类与抽象方法的使用abstract: 抽象的 1.可以用来修饰:类、方法2.具体的:abstract修饰类:抽象类 此类不能实例化 抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程) 开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作 抽象的使用前提:继承性 abstract修饰方法:抽象方法 抽象方法只有方法的声明,没方法体 包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法的。 若子类重写了父类中的所的抽象方法后,此子类方可实例化 若子类没重写父类中的所的抽象方法,则此子类也是一个抽象类,需要使用abstract修饰 3.注意点:3.1.abstract不能用来修饰:属性、构造器等结构3.2.abstract不能用来修饰私有方法、静态方法、final的方法、final的类4.abstract的应用举例:举例一: 123456789abstract class GeometricObject{ public abstract double...
面向对象初级-(三)
1 面向对象的特征一:封装性1.为什么要引入封装性?我们程序设计追求“高内聚,低耦合”。高内聚 :类的内部数据操作细节自己完成,不允许外部干涉;低耦合 :仅对外暴露少量的方法用于使用。 隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。 2.问题引入:当我们创建一个类的对象以后,我们可以通过”对象.属性”的方式,对对象的属性进行赋值。这里,赋值操作要受到属性的数据类型和存储范围的制约。除此之外,没其他制约条件。但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。(比如:setLegs()同时,我们需要避免用户再使用”对象.属性”的方式对属性进行赋值。则需要将属性声明为私有的(private). ...
面向对象初级-(二)
1.this关键字1.可以调用的结构:属性、方法;构造器2.this调用属性、方法:this理解为:当前对象或当前正在创建的对象 2.1 在类的方法中,我们可以使用”this.属性”或”this.方法”的方式,调用当前对象属性或方法。但是,通常情况下,我们都选择省略”this.”。特殊情况下,如果方法的形参和类的属性同名时,我们必须显式的使用"this.变量"的方式,表明此变量是属性,而非形参。 2.2 在类的构造器中,我们可以使用”this.属性”或”this.方法”的方式,调用当前正在创建的对象属性或方法。但是,通常情况下,我们都选择省略”this.”。特殊情况下,如果构造器的形参和类的属性同名时,我们必须显式的使用"this.变量"的方式,表明此变量是属性,而非形参。 3.this调用构造器:① 我们在类的构造器中,可以显式的使用”this(形参列表)”方式,调用本类中指定的其他构造器② 构造器中不能通过”this(形参列表)”方式调用自己③ 如果一个类中有n个构造器,则最多有 n -...
面向对象初级-(一)
1. 面向对象与面向过程(理解) 面向过程: 强调的是功能行为,以函数为最小单位,考虑怎么做。 面向对象: 强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。举例对比:人把大象装进冰箱。 2. 面向对象中两个重要的概念: **类:**对一类事物的描述,是抽象的、概念上的定义 **对象:**是实际存在的该类事物的每个个体,因而也称为实例(instance) 3. 类和对象的使用–面向对象思想落地实现面向对象程序设计的重点是类的设计设计类,就是设计类的成员。创建类的对象 = 类的实例化 = 实例化类 创建类、设计类的成员 创建类的对象 通过“对象.属性”或“对象.方法”调用对象的结构 几个概念的使用说明属性 = 成员变量 = field = 域、字段方法 = 成员方法 = 函数 =...
数组
数组1. 数组-数组的概述1. 数组的理解: 数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 2. 相关概念:数组名元素角标、下标、索引数组的长度:元素的个数 3. 数组的特点: 数组是有序排列的 数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型 创建数组对象会在内存中开辟一整块连续的空间 数组的长度一旦确定,就不能修改。 4. 数组的分类① 照维数:一维数组、二维数组……② 照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组 2. 数组一维数组的初始化、遍历与元素默认初始化值1. 一维数组的声明与初始化正确的方式:int num;//声明num = 10;//初始化int id = 1001;//声明 + 初始化 1234567int[] ids;//声明//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行ids = new...
流程控制语句
流程控制流程控制语句分类: 顺序结构:从上而下顺序执行每一行代码 分支结构:或选择结构,根据条件选择执行不同的代码 循环结构:重复执行某一些代码 1. 顺序结构 任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转。如果main方法的多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行。 2. if 分支结构1. if语句结构一:123if(条件表达式){ 执行表达式} 2. if语句结构二:12345if(条件表达式){ 执行表达式1}else{ 执行表达式2} 3. if语句结构三:1234567891011if(条件表达式){ 执行表达式1}else if(条件表达式){ 执行表达式2}else if(条件表达式){ 执行表达式3}... else{ 执行表达式n ...
数据类型与运算符
数据类型与运算符1. 计算机如何存储整数和小数1.计算机如何存储整数 计算机底层存储的是整数的补码。 要知道补码,必须先知道原码,和反码。 用一个字节举例 原码:最高位是符号位(0表示正数,1表示负数),其他位为数值位。 比如: 10的原码: 00001010 -10的原码: 10001010 反码:正整数的反码与原码一致,负整数的反码是在原码基础上,符号位不变,其他位按位取反 10的反码: 00001010 -10的反码:11110101 补码:正整数的补码与原码一致,负整数的补码是在反码基础上加1 10的补码:00001010 -10的补码:11110110 一个字节Byte可以表示的数值范围: 不考虑负数:0000000011111111 : 0255 考虑负数: 0000 0000 ~ 0111 1111 ==> 0~127 1000 0001 ~ 1111 1111 ==> -127 ~ -1 (补码形式存储) 1000 0000 ==> -128 ...





