java基础
JAVA的特点特点一:面对对象特点二:健壮性特点三:跨平台性
Java的两个核心机制什么是JDK,JREJava的第一个程序步骤
关键字和保留字标识符标识符:定义合法标识符规则:
Java 中的名称命名规范
变量变量的概念:变量的分类整型的变量的使用说明浮点型变量的使用说明char型变量的使用说明
数组数组的概述一维数组的使用
多维数组
面向对象面向过程与面向对象面向对象的三大特征Java基本元素:类和对象类的成员:属性、方法、构造器匿名对象的使用方法重载定义特点重载实例
可变个数形参的方法权限修饰符构造器构造器的作用特征说明
this 关键字面向对象的特征二:继承性好处继承性的使用
JAVA的特点
特点一:面对对象
两个基本概念:类、对象 三大特性:封装、继承、多态
特点二:健壮性
吸收了C++的优点,但去掉了其影响健壮性的部分(如指针、内存的申请与释放等),提供一个相对安全的内存管理和访问机制。
特点三:跨平台性
跨平台性:通过JAVA语言编写的应用程序在不同的系统上都可以运行。 原理:只要在运行java应用程序的操作系统上,先安装一个java虚拟机即可。由JVM来负责Java程序在该系统中的运行。
Java的两个核心机制
java虚拟机垃圾回收机制
不再使用的内存空间应回收——垃圾回收在C/C++等语言中,由程序员负责回收无用内存 Java语言消除了程序员无用内存空间的责任:它提供了一种系统集线程跟踪存储空间的分配情况。并在JVM空间时,检查并释放那些可被释放的存储空间。垃圾回收在Java程序运行过程中自动进行,程序员无法精准控制和干预。
什么是JDK,JRE
JDK(开发工具包) JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用再单独安装JRE了。 其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等JRE(Java开发工具) 包括Java虚拟机和Java程序所需的核心库类等。如果想要运行一个开发好的Java程序,计算机中只要安装JRE即可
简而言之:使用JDK的开发工具完成的Java程序,交给JRE去运行
Java的第一个程序
步骤
将Java代码编写到拓展名为.java的文件中.通过javac命令对该文件java文件进行编译.通过java命令对生成的class文件进行运行.
.java文件---->.class文件------>结果.java文件---->.class文件 (javac.exe) .class文件---->结果 (java.exe)
class HelloWorld{
public static void main(String args[]){
System.out.println("HelloWorld !!!");
}
}
关键字和保留字
关键字(keyword)的定义和特点
定义:
被Java语言赋予了特殊的含义,用作专门用途的字符串(单词)关键字中所有字符都为小写
用于定义数据类型的关键字‘’‘’‘’‘’
classinterfaceenumbyteshortintlongfloatdoublecharbooleanvoid
用于定义流程控制的关键字‘’‘’‘’‘’
ifelseswitchcasedefaultwhiledoforbreakcontinuereturn
用于定义访问权限修饰符的关键字‘’‘’
privateprotectedpublic
用于定义类,函数,变量修饰符的关键字‘’‘’‘’
abstractfinalstaticsynchronized
用于定义类与类之间关系的关键字‘’
extendsimplement
用于定义创建实例及引用实例,判断实例的关键字‘’‘’‘’
newthissuperinstanceof
用于异常处理的关键字‘’‘’‘’‘’
trycatchfinallythrowthrows
用于包的关键字‘’‘’
packageimport
*定义数据类型值的字面值‘’‘’
truefalsenull
保留字
Java 保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名时要避免使用这些保留字。(goto,const)
标识符
标识符:
Java对各种变量、方法和类等要素命名时,使用的字符序列成为标识符
定义合法标识符规则:
由26个英文字母大小写,0-9,_和$组成数字不可开头不可使用关键字和保留字,但是可以包含关键字和保留字Java 严格区别大小写,长度无限制标识符不能包含空格
Java 中的名称命名规范
Java中命名规范
包名:多单词组成所有字母都小写,xxxyyyyzzz 类命、接口名:多单词组成,所有单词的首字母大写:XxxYyyZzz 变量名:多单词组成时,第一个单词首字母小写,第二单词开始每个单词首字母大写:xxxYyyZzz 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ 注意:在起名字时,为了提高阅读性,要尽量见名知意 java采用unicode字符集,因此标识符也可以使用汉字申明,但是不建议使用
变量
变量的概念:
内存中的一个存储区域 该变量的数据可以在同一类型范围内不管变化 变量时程序中最基本的存储单元。包括变量类型、变量名和存储的值
变量的作用:
用于在内存中保存数据
使用变量注意
Java中每个变量必须先申明,后使用 使用变量名来访问这块区域的数据 变量的作用域:其定义所在的一对{}内 变量只有在其作用域内才有效 同意个作用域内,不能定义重名的变量
变量的分类
变量按照数据类型分:
基本数据类型: 整形:byte|short|int|long 浮点型:float|double 字符型:char 布尔型:boolean引用数据类型: 类(class) 接口(interface) 数组(array)
变量在类中声明的位置: 成员变量 VS 局部变量
整型的变量的使用说明
Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证Java程序的可移植性。
Java的整形常量默认为int型,声明long型常量须加l或LJava程序中变量通常声明为int型,除非不足以表示较大的数,才能使用long
类型占用存储空间表数范围
byte1字节=8bit位-128~127short2字节-2^15 ~ -2^15-1int4字节-2^31 ~ -2^31-1long8字节-2^63 ~ -2^63-1
浮点型变量的使用说明
浮点型常量有两种表示形式:
十进制数形式:如:5.12 ,512.0f,.512(必须有小数点)科学计数法形式:如5.12e2,512E2
float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求 double:双精度,精度时float的两倍。通常采用次类型
Java的浮点型常量默认为double型,声明float型常量,须后加f或F
类型占用存储空间表数范围
float4字节-3.403E38~-3.403E38double8字节-1.798E308 ~ 1.798E308
char型变量的使用说明
数组
数组的概述
数组的理解 数组(Array),时多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。数组的相关概念
数据名 元素 角标、下表、索引 数组的长度:元素的个数
数组的特点: (1)数组是有序排列的。 (2)数组属于引用数据类型的变量。数组的元素,既可以时基本数据类型,也可以是引用数据类型。 (3)创建数组对象就在内存中开辟一整块连续的空间 (4)数组的长度一旦确定,就不能修改数组的分类 按照维数:一维数组、二维数组、多维数组 按照数组元素的类型:基本数据类型的数组、引用数据类型元素的数组
一维数组的使用
* 一维数组的声明和初始化
* 如何调用数组的指定位置的元素
* 如何获取数组的长度
* 如何遍历数组
* 数组元素的默认初始化值
* 数组的内存解析
//1、一位数组的声明和初始化
int num;//声明
num = 10;//初始化
int id = 1001;
int[] ids;//声明
//1。1静态初始化:数组的初始化和数组元素的赋值操作同时进行
ids = new int[]{1001,1002,1003};
//1。2动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[6];
//错误的写法
//int[] arr1 = new int[];
//int[5] arr2 = new int[5];
//int[] arrr3 = new int[3]{1,2,3}
//`总结`:数组一旦初始化完成,其长度就确定了。
多维数组
面向对象
面向过程与面向对象
两者都是一种思想,面向对象是相对于面对过程而言的。面对过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面对对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。 面对对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如:抽象、分类、继承、聚合、多态等。
面向对象的三大特征
封装 继承 多态 (抽象)
Java基本元素:类和对象
类的成员:属性、方法、构造器
匿名对象的使用
理解:我们创建的对象,没有显式的赋给一个变量名。即为匿名对象。特征:匿名对象智能调用一次。
class Object {
public static void main(String args[]){
new Phone();
}
}
方法重载
定义
在同一个类中,允许存在一个以上的同名方法,只要它们的参数类型不同即可。
特点
与返回值类型无关,只看参数列表,且参数列表不同(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。
重载实例
int add(int x,int y)
int add(int x,int y,int z)
判断是否是重载 和方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系在通过对象调用方法时,如何确定某一个指定的方法 方法名------参数列表
可变个数形参的方法
jdk 5.0新增的内容具体内容: 1、可变个数形参的格式:数据类型…变量名称 2、当调用可变个数形参的方法时,传入的参数的个数可以是0个或者多个 3、可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载 4、可变个数形参的方法与类名方法名相同,形参类型也相同的数据之间不构成重载 5、可变个数形参在方法的形参中,必须声明在末尾
权限修饰符
封装性的体现,需要权限修饰符来配合 1、Java规定的4种权限(从小到大):private 、缺省、protected、public
修饰符类内部同一个包不同包的子类同一个工程
privateYES缺省YESYESprotectedYESYESYESpublicYESYESYESYES
对于class的权限修饰符只可以用public和default(缺省)
public 类可以在任意地方被访问default 类只可以被同一个包内部的类访问4种权限可以用来修饰符的内部结构:属性、方法、构造器、内部类修饰类只能用:缺省、public
构造器
构造器的作用
创建对象初始化对象化的属性
特征
它具有与类相同的名称它不声明返回类型(与声明为void不同)不能被static、final、synchronized、abstact、native修饰,不能有return语句返回值。
说明
如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器定义构造器的格式:权限修饰符 类名(形参列表){}一个类中定义的多个构造器,彼此之间构成重载一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器一个类中,至少会有一个构造器
this 关键字
this关键字可以用来修饰、调用:属性、方法、构造器this关键字修饰属性和方法: this关键字理解:当前对象或当前正在创建的对象this调用构造器 1、我们在类的构造器中,可以显式的使用this(形参列表)方式,调用本类中指定的其他构造器 2、构造器中不能通过this(形参列表)方式调用自己
面向对象的特征二:继承性
好处
减少了代码的冗余,提高了代码的复用性便于功能的拓展为多态性的使用,提供了前提
继承性的使用
class A extends B
A:子类、派生类、subclass B:父类、超类、基类、superclass
体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的结构:属性、方法。 特别的,父类中声明为private的属性或者方法,子类继承父类以后,仍然认为获取父类中私有的结构。只有因为封装性的影响,使得子类不能直接调用父类的结构而已。子类继承父类之后,还可以声明自己特有的属性或方法,实现功能的拓展。
Java只能支持单继承和多继承,不允许多重继承
一个子类只能继承一个父类一个父类可以派生出多个子类