java基础知识

一、JDK、JRE基本介绍

JDK的全称(Java Development Kit Java开发工具包);JDK = JRE + Java 开发工具包 [Java,Javac,Javadoc,Javap等]
JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
JRE(Java Runtime Environment Java运行环境)JRE = JVM + Java 的核心类库 [类]。
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想运行一个开发好的Java程序,计算机中只需要安装JRE即可。


二、JDK、JRE 和 JVM 包含关系

JDK = JRE + 开发工具集 (例如Javac,Java编译工具等)
JRE = JVM + Java SE 标准类库 (Java核心类库)


三、Java基础知识

        基础概念/语法:面向对象(继承、封装、多态)基础、包、类、接口、方法、对象、属性、第一个 Java 程序。

        标识符: 用来标识类名、对象名、变量名、方法名、类型名、数组名、文件名的有效字符序列。

        合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且首字符不能是数字;不能把java关键字和保留字作为标识符;标识符对大小写敏感。

变量类型:局部变量、实例变量(成员变量)、类变量(静态变量)
变量的声明:数据类型 变量名;
变量的赋值:变量名 = 数据;
变量的操作:放入打印语句进行输出或者进行运算
各种数据类型的默认值:

运算符

1)算术运算符:+、-、*、/、%、++、--;

2)关系运算符:==、!=、>、<、>=、<=;

3)逻辑运算符:&&、||、!;

4)赋值运算符:=、+=、-=、*=、/=;

5)条件运算符:Object x = (expression) ? value if true : value if false;

权限控制修饰符:


面向对象三大特性

继承:一般类只能单继承,内部类实现多继承,接口可以多继承

封装:访问权限控制public > protected > 包 > private 内部类也是一种封装

多态:编译时多态,体现在向上转型和向下转型,通过引用类型判断调用哪个方法(静态分派)。

1.类和对象


类与对象时整个面向对象中最基础的组成单元。

:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法);
对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。

类与对象的区别:类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。

定义一个类的基本格式
[修饰符] class 类名{
0到多个构造器
0到多个成员变量
0到多个方法
0到多给初始化块
}修饰符可以写public final abstract或者不写,java类名要用大驼峰写法。一个java源文件(也就是文件后缀名为.java的文件)可以写多个类,但是里面只能有一个用public修饰的class,
 

final关键字

1.用来修饰一个引用

如果引用为基本数据类型,则该引用为常量,该值无法修改;

如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。

如果引用时类的成员变量,则必须当场赋值,否则编译会报错。

2.用来修饰一个方法

当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。

使用final方法的原因主要有两个:

(1)把方法锁定,以防止继承类对其进行更改。

(2)效率,在早期的java版本中,会将final方法转为内嵌调用。但若方法过于庞大,可能在性能上不会有多大提升。因此在最近版本中,不需要final方法进行这些优化了。

final方法意味着“最后的、最终的”含义,即此方法不能被重写。

注意:若父类中final方法的访问权限为private,将导致子类中不能直接继承该方法,因此,此时可以在子类中定义相同方法名的函数,此时不会与重写final的矛盾,而是在子类中重新地定义了新方法。

3.用来修饰一个类

当用final修饰类时,该类成为最终类,无法被继承,该类就不能被其他类所继承。当我们需要让一个类永远不被继承,此时就可以用final修饰,但要注意:

final类中所有的成员方法都会隐式的定义为final方法。

2.构造器


什么是构造器

构造器通常也叫构造方法、构造函数,构造器在每个项目中几乎无处不在。当你new一个对象时,就会调用构造器。构造器格式如下:

[修饰符,比如public] 类名 (参数列表,可以没有参数){ //这里不能有return}

构造器的注意事项:

1.构造器的名称必须和类名一致
2.一个类中可以定义多个构造器,但是构造器的参数列表必须不同(重载)
3.如果我们没有手动定义构造器,则Java系统会提供一个默认的构造器给我们使用,一旦我们定义了构造器,则系统会把默认的构造器收回
4.构造器的作用:实例化对象,给对象赋初始值
5.代码游离块优先执行


构造器的定义

构造方法的名字必须和所在类的名字一致,没有返回值,但不能声明void,访问权限可以为任意,但是一般情况下使用public方法权限,构造方法中的参数可以根据需要自行定义,参数的不同的构造方法构成重载

构造器的使用

Java中构造方法的使用有两个地方,一个是跟在关键字new后面,类名加上一个小括号(),小括号内根据实际加上实参,另外一个是跟在关键字super或this后加上一个小括号(),小括号内根据实际添加实参

构造器的继承

1)子类构造器会默认调用父类无参构造器,如果父类没有无参构造器,则必须在子类构造器的第一行通过 super关键字指定调用父类的哪个构造器

2)final类是不允许被继承的,编译器会报错。很好理解,由于final修饰符指的是不允许被修改,而继承中,子类是可以修改父类的,这里就产生冲突了,所以final类是不允许被继承的。

构造器、静态代码块、构造代码块的执行顺序

1.无继承的情况下的执行顺序静态代码块:只在程序启动后执行一次,优先级最高构造代码块:任何一个构造器被调用的时候,都会先执行构造代码块,优先级低于静态代码块构造器:优先级低于构造代码块总结一下优先级:静态代码块 > 构造代码块 > 构造器


2.有继承的情况下的执行顺序:父类静态代码块:只在程序启动后执行一次,优先级最高 子类静态代码块:只在程序启动后执行一次,优先级低于父类静态代码块 父类构造代码块:父类任何一个构造器被调用的时候,都会执行一次,优先级低于子类静态代码块父类构造器:优先级低于父类构造代码子类构造代码块:子类任何一个构造器被调用的时候,都会执行一次,优先级低于父类构造器子类构造器:优先级低于子类构造代码块总结一下优先级:父类静态代码块 > 子类静态代码块 > 父类构造代码块 > 父类构造器 > 子类构造代码块 > 子类构造器

3.成员变量和局部变量
 
     Java 语言中若变量按声明的位置分类,可以分为:成员变量、局部变量,而成员变量又分为:实例变量,全局变量。实例变量是指不使用static修饰的变量,全局变量是指使用static修饰的变量。 局部变量包括:方法内声明的变量、方法的形参、构造器的形参、代码块内声明的变量。

相同点:
      1.声明格式相同
          格式: 数据类型  变量名  =  变量值
      2.变量,必须先声明后使用
      3.变量,都有其作用域

不同点:
      1.声明的位置不同:
          成员变量:直接声明在类的内部
          局部变量:方法内声明的变量
                           方法的形参、构造器的形参
                           代码块内声明的变量。


       2.权限修饰符的使用:
                   成员变量:可以在声明的类型前,指明权限修饰符。
                           权限修饰符有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值