java基础

java入门
JDK:java开发环境 jdk包含jre和jvm
JRE:java运行环境
JVM:java虚拟机
java是什么?
简单来说Java语言是一门跨平台的计算机开发语言
安装JDK都安装了什么?
安装JDK,同时安装jre
为什么安装jre?什么是java的平台无关性?
jre为运行环境,不可缺少
Java经过编译之后生成的.class 的字节码文件,运行平台上只要有JVM就能运行,不需要进行再次编译
环境变量的作用:
CLASSPATH环境变量:作用是指定类搜索路径
JAVA_HOME环境变量:它指向jdk的安装目录
Path : 指向bin文件夹
java和javac的作用
javac编译java文件生成.class文件;java执行.class文件
java的命名规范
一般情况 见名知意
包名: 1 全部小写的英文字母
2 层级关系 使用 . 分割
class类:抽象的一个事物的组成

public class  类名{
}

类名: A 首字母大写 其他的后续单词遵循驼峰命名法(如果有多个单词组成,每个单词的首字母都大写)
B public修饰的 类 必须与文件名相同
C 一个java文件中,只可以有一个以public修饰的类
D 数字 字母 $ 可以用于组成类名,不能以数字开头
变量的分类
类型: 整数类型 浮点类型 布尔类型 字符型
整数类型:byte(字节型) short(短整型) Int(整型 ) long(长整型)
| 类型 | 字节 |位数 | 取值范围
|-byte-|-1-| 8 | -128~127
|short| 2 | 16 | (-2)的15次方~2的15次方减一
|int | 4 | 32 | (-2)的31次方~2的31次方减一
|long | 8| 64 | (-2)的63次方~2的63次方减一
布尔类型 Boolean
字符串:字符型 char = ‘’ unicode码
a : unicode 编码
b:单个字符,英文的单引号内 char = ‘’
c:可以直接写字符对应的编码 char ch=65
d:可以参与运算
浮点型 :单精度浮点型 float
双精度浮点型 double

开发java程序的步骤
1.创建源代码 创建文档 .java文件
2.编译源代码 将 .java文件转化为 .class文件 /javac 文件名
3.运行.class文件 虚拟机 jvm /java 类名


类:对象的模板 描述一类对象的行为和状态
对象:类的实例 (万物皆对象)有行为和状态
类由什么组成: (属性和方法)
一个java文件中可以有多个类,但只有一个主类,被public修饰,且主类名称和java文件名相同
属性:属性可以理解为对象的数据,
声明方式:(访问权限修饰符)(修饰符)数据类型 属性名(=初值)
方法:即对象的行为,也称函数。
声明方式:声明形式:(访问权限修饰符)(修饰符)返回值数据类型 方法名

(形式参数列表){
                       		 执行语句;
                     		   return;                      
                       		 }

方法的特点:对功能代码进行封装;便于进行功能复用(调用方法);没有返回值,用void修饰,return语句可以不写;方法中可以调用方法,不可以在方法内部定义方法;定义方法时,方法的结果返回给调用者;
方法的重写和重载:overloading和override

  • 重载
    overloading 重载: 前提:在同一个类中
    要求:方法名相同,参数列表不同(数量、顺序、类型),在同一作用域
    注意:和返回值以及权限修饰符没有关系

  • 重写
    override 重写
    前提:建立在继承之上(子类继承父类,子类重写父类方法)
    注意:方法名和参数列表以及返回值 都必须一样;如果调用方法时,则调用的是重写后的方法,如果要调用父类方法,则使用super关键字在子类中调用父类的方法

“super.方法名(参数列表)”

区别

重载重写
同一个类之中不同的类
方法名相同方法名不同
参数列表不同参数列表相同
修饰符无关修饰符必须大于父类
可以抛出父类没有的异常不能抛出父类没有的异常
返回值类型不同返回值类型相同
面向对象多态与面向对象继承

权限修饰符: 子类>=父类
异常 子类<=父类

		修饰符           本类         同一个包中的类     子类        其他类
		public         可以访问       可以访问         可以访问    可以访问
		protected      可以访问       可以访问         可以访问    不能访问
		默认           可以访问       可以访问         不能访问    不能访问
		private        可以访问       不能访问         不能访问    不能访问

接口和抽象类的区别:
接口:interface implements 无构造器
构造方法:类名与方法名相同,构造器无返回值类型
抽象类:abstract extends 抽象类的构造器不能创造对象 不能被实例化
抽象类中可以有属性、方法、构造方法,都是用来给子类继承的
抽象类里可以全都是普通方法,如果一个类里有抽象方法,这个类一定是抽象类,
接口里只能有抽象方法,接口中的属性默认为静态常量 static int User=10;
抽象类有构造方法,

	接口			       			                 	抽象类
	interface						           	       abstract
	implement					           	           extends
	无构造器				 			        有构造器(构造器不能创造对象)
	可以继承一个或多个其他接口				 可以继承一个类和实现多个接口
	无main方法,不可运行		       			      可以有main方法,可运行
	修饰符只有public			       	   修饰符有public、private、default等
	不存在方法的实现			      			         有默认的实现方法
	成员变量只能是public static final类型的	 	   成员变量可以是任何类型

构造方法可以被重写吗?为什么?
不能重写但是可以重载,因为构造方法不能被继承
final修饰的属性可以被继承,但是不能修改,修改后就成为子类所特有的
构造方法不能被子类继承

面向对象三大特征:封装,继承,多态
封装:将类的某些信息隐藏在类内部,不允许外界程序直接访问,而是通过该类提供的方法(例如:get方法、set方法)来实现对隐藏信息的操作和访问
只在当前类有效,外界不可直接访问,只能通过该类提供的方法进行访问,属性用private修饰
继承: 子类继承父类 extends implements 不可多重继承,可以用接口实现
特性: 子类重写父类方法
子类不可以继承父类:private、构造器、被final修饰的类、
被final修饰的方法可以继承,但不能重写
private修饰的类、属性、方法都不能被继承
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
约束关系:1 按继承关系,构造方法是从上到下进行调用的
2 如果子类没有构造方法,则它默认调用父类无参的构造方法,如果父类中没有无参的构造方法,将产生错误
3 如果子类有构造方法,那么创建子类对象时,先执行父类的构造方法,再执行子类的构造方法
4 如果子类有构造方法,但子类的构造方法中没有super关键字,则系统会默认执行该构造方法时会产生super()代码,即该构造方法会调用父类无参数的构造方法
5 对于父类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造函数方法中的第一条语句
6 Java语言中规定当一个类中含有一个或多个有参构造方法,系统不提供默认的构造方法(即不含参数的构造方法)
7.实现:更抽象的继承 implements 通常指接口的实现 实现一个接口就是要实现该接口的所有方法(抽象类除外)
8.接口中的方法都是抽象的,多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口
9.子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。
10.如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。
多态:多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
多态存在的三个必要条件:重写、继承、父类引用指向子类对象
关键字

  1. super

(1):用来访问被当前对象隐藏的父类成员

super.<成员变量方法>

(2):调用父类的构造函数 super(调用参数列表)

this:用来引用当前对象

2.implements:类实现接口,用来实现接口中定义的抽象方法 可实现多个接口,子类不可以覆盖父类的方法或者变量(即使子类定义与父类相同的变量或者函数,也会被父类取代)

3.extends:继承父类(被final修饰、定义为abstract除外),也可以调用父类初始化this.parent(),会覆盖父类定义的变量或者函数 若同时用到extends和implements时,extends必须放在implements之前
4. abstract:定义抽象类、定义抽象方法(不需要实现)
5. interface:定义接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值