Java基础
发布日期:2021-10-10 05:31:36
浏览次数:38
分类:技术文章
本文共 5319 字,大约阅读时间需要 17 分钟。
java基础
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语言赋予了特殊的含义,用作专门用途的字符串(单词)
- 关键字中所有字符都为小写
用于定义数据类型的关键字 | ‘’ | ‘’ | ‘’ | ‘’ |
---|---|---|---|---|
class | interface | enum | byte | short |
int | long | float | double | char |
boolean | void |
用于定义流程控制的关键字 | ‘’ | ‘’ | ‘’ | ‘’ |
---|---|---|---|---|
if | else | switch | case | default |
while | do | for | break | continue |
return |
用于定义访问权限修饰符的关键字 | ‘’ | ‘’ |
---|---|---|
private | protected | public |
用于定义类,函数,变量修饰符的关键字 | ‘’ | ‘’ | ‘’ |
---|---|---|---|
abstract | final | static | synchronized |
用于定义类与类之间关系的关键字 | ‘’ |
---|---|
extends | implement |
用于定义创建实例及引用实例,判断实例的关键字 | ‘’ | ‘’ | ‘’ |
---|---|---|---|
new | this | super | instanceof |
用于异常处理的关键字 | ‘’ | ‘’ | ‘’ | ‘’ |
---|---|---|---|---|
try | catch | finally | throw | throws |
用于包的关键字 | ‘’ | ‘’ |
---|---|---|
package | import |
*定义数据类型值的字面值 | ‘’ | ‘’ |
---|---|---|
true | false | null |
- 保留字
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
或L
- Java程序中变量通常声明为int型,除非不足以表示较大的数,才能使用long
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1字节=8bit位 | -128~127 |
short | 2字节 | -2^15 ~ -2^15-1 |
int | 4字节 | -2^31 ~ -2^31-1 |
long | 8字节 | -2^63 ~ -2^63-1 |
浮点型变量的使用说明
- 浮点型常量有两种表示形式:
- 十进制数形式:如:5.12 ,512.0f,.512(必须有小数点)
- 科学计数法形式:如5.12e2,512E2
- float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求 double:双精度,精度时float的两倍。通常采用次类型
- Java的浮点型常量默认为double型,声明float型常量,须后加
f
或F
类型 | 占用存储空间 | 表数范围 |
---|---|---|
float | 4字节 | -3.403E38~-3.403E38 |
double | 8字节 | -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修饰符 | 类内部 | 同一个包 | 不同包的子类 | 同一个工程 |
---|---|---|---|---|
private | YES | |||
缺省 | YES | YES | ||
protected | YES | YES | YES | |
public | YES | YES | YES | YES |
对于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只能支持单继承和多继承,不允许多重继承
- 一个子类只能继承一个父类
- 一个父类可以派生出多个子类
转载地址:https://blog.csdn.net/qq_22061617/article/details/107104507 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月26日 00时12分37秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ConfigurationProperties实现
2019-05-01
loadbalancer动态刷新nacos的server
2019-05-01
@FeignClient注解的重复名称解决
2019-05-01
org.openjdk.jol
2019-05-01
access_flags
2019-05-01
ClassFile之Methods
2019-05-01
scala var val
2019-05-01
oracle sql
2019-05-01
java.net.BindException: 无法指定被请求的地址
2019-05-01
scala list
2019-05-01
多人协作流程与规范
2019-05-01
k8s设置阿里云仓库
2019-05-01
svn服务器安装
2019-05-01
spark 笔记1
2019-05-01
SVN服务器多个项目的权限分组管理
2019-05-01
svn 没有作者信息) | (没有时间信息
2019-05-01
shell笔记1
2019-05-01
shell参数
2019-05-01
shell dirname basename
2019-05-01
eureka rest operations
2019-05-01