java 基础--理论知识

变量分:
局部变量
全局变量
-----------------------------------------------------
变量三大特性【标识符,初始值,作用域】
定义变量:
语法:[访问修饰符] 数据类型 变量名
例如:public int age;
如何为变量赋值和取值?
age=10;
System.out.println(age);
----------------------------------------------------------
常量:在程序运行期间不会改变
关键字:final
语法:[访问修饰符] [static] final 数据类型 常量名
例如:final double PI=3.14;
注意事项:
1:使用final关键字定义常量
2:常量必须有值
3:建议常量名全部大写
-----------------------------------------------------
定义常量时,通常会使用static关键字修饰
public static final int WIDTH=5;
public final static int WIDTH=5;
-----------------------------------------------------
Java数据类型分类:数值类型,非数值类型
还可以分为原始类型对象类型
-----------------------------------------------------
原始类型(基本类型):
byte, short, int, long, float, double, char, boolean
-------------------------------------------------------------------
对象类型(引用类型)
String, 类, 接口, 数组, 泛型, 枚举, 集合
---------------------------------------------------
数值类型
整数:
byte:(-128---127)32b
short:(-32768----32767)
int:-2的31次方---2的31次方-1[32]
long:-2的63次方---2的63次方-1[64]
非整数:
float:-2的31次方---2的31次方-1[32]
float:标识符为f,例如:8.5f
最多保留6位小数,从第7开始四舍五入
------------------------------------------------
double:-2的63次方---2的63次方-1[64]
标识符为:d,小数默认类型为double
最多保留16位小数,从第17开始四舍五入
非数值类型
char
String
boolean
类,接口.......
---------------------------------
package:包

========================================================================》》

数据类型转换
---------------------------------------
自动类型提升:(小到大)
1:bytebyte类型构成表达式时,自动类型提升到int
2:在一个表达式里面,如果出现了int,float,double
或者其他数值类型,自动提升到该表达式最高类型
byte+byte>int
int+int>int
float+float>float
double-double>double
int+float>float
int+double>double
int+float+double>double
int+long+double>double
--------------------------------
强制类型转换(大到小)
int>byte
float>int
double>float>int.....
long>int>short
强制类型转换可能导致丢失数据
语法:
(目标类型)原类型
前提:数值类型
--------------------------------
int->Integer
char->Charactor
float->Float
double->Double
short->Short
long->Long
boolean->Boolean
byte->Byte
---------------------------------
Java运算符
赋值运算符:从右向左
=,+=,-=,/=,%=
算术运算符
+,-,*,/,%,++,--
逻辑运算符
&&-->A and B->A,B同时为真则为真,如果A已经false,B不执行
||-->A or B->A,B一边为真则为真,如果A已经true,B不执行
!-->not A->如果A是真,则转成假

========================================================================》》

1:数组的概念
在内存中连续存储多个相同类型的线性数据结构
特点:
A:连续存储
B:存储的数据类型相同
C:通过下标访问每一个数组元素,从0开始
----------------------------------------------------
2:为什么要使用数组?
基本的变量只能存储单个数据,如果要存储
多个数据,需要定义多个变量,不便于操作
与管理
-----------------------------------------------------
3:如何定义一维数组?
基本方式:
数据类型[] 数组名;
数组名=new 数据类型[长度];
其他方式
A:数据类型[] 数组名=new 数据类型[长度];
B:数据类型[] 数组名={值1,值1,值1....};
C:数据类型[] 数组名=new 数据类型[]{值1,值2,.....};
其中B,C都是在声明数组的同时进行了初始化操作
------------------------------------------------------------
如何使用数组?
赋值:数组名[下标]=值;
取值:数组名[下标]
注意:数组下标从0开始,最大下标为数组length-1
例如:int[] ages={3,4,5,6,7};
ages[0]-->3;//0最小下标
ages[4]-->7;//4最大下标
获取数据最大下标可以使用属性length-1
System.out.println("ages数组最大下标:"+(ages.length-1));

========================================================================》》

1:对象的概念
现实中具有特定属性行为的所有实体
都是对象
一切皆对象
要研究一个对象,从对象拥有的属性方法开始
实体---->对象
特征---->属性
行为---->方法
------------------------------------------
2.类的概念
具有相同属性共同行为的一组对象的集合
-----------------------------------------
类是从一系列对象中抽取共同点而产生的
一种逻辑上的概念
-----------------------------------------
类和对象之间的关系
1:类是对象的模板,集合【定义了所有对象的共同特征和行为】
2:对象是类的一个具体实现
--------------------------------------
如何创建对象?
类 对象名=new 类();
---------------------------------
Object类--->所有类的根类
toString();
---------------------------------
注意:
1:类的成员属性和方法必须由对象来使用
2:类的成员属性可以被类的成员方法直接调用
---------------------------------
类里面所有非static修饰的属性和方法
都是成员属性和成员方法
----------------------------------
同一个类中,静态属性和静态方法在任何
地方可以直接使用,不需要构建对象

 ========================================================================》》

1:封装的概念
将事物包装起来,隐藏事物的实现细节即为封装
2:为何需要封装?
A:封装将事物统一收集,便于事物的管理
B:封装将事物细节进行隐藏,限制了事物的访问
3:有哪些地方体现了封装?
电脑主机箱,教室,包,类
-------------------------------------------------------
在Java中,针对每一种基本数据类型,都提供了
一个封装类来进行对这些基本类型的管理和操作
int-->装箱-->Integer-->拆箱-->int
char-->装箱-->Charactor
float-->Float
double-->Double
byte-->Byte
boolean-->Boolean
short-->Short
long-->Long
-----------------------------------
定义类的属性时,如果直接暴露所有属性是不合理
也不安全的,为此,我们需要对属性进行封装
隐藏具体细节,即保证了合理性,也利于程序安全
--------------------------------------
如何将属性封装起来?
将类中属性私有化,提供公有的方法访问这些私有的属性
[特点:不能直接访问属性]
私有化:只能自己独自享用
公共方法:谁都可以用
-----
Java中提供了一组访问修饰符来限制事物的访问
public 公共的 能被所有地方访问
private 私有的 只能被同一个类访问
protected 受保护的 同一个包可以访问,不同包的子类可以访问
[default] 默认的 同一个包可以访问
--------------------------
Java三层范围
A:同一个类
B:同一个包
C:不同包

 ========================================================================》》

一:什么样的方法是构造方法?
1:方法名类名相同
2:没有返回类型[void也是一种返回类型]

二:构造方法有什么作用?
初始化类的成员变量
【当实例化一个对象时,为这个对象的属性赋于初始值】

三:如何调用构造方法?
使用关键字new
new Student();代表调用不带参数名称为Student的构造方法
new Student("abc",23);代表调用带两个参数名称为Student的构造方法
在一个类中,可以出现多个名称相同,但是参数不同
的构造方法。

四:this关键字
this代表当前对象的一个引用
this关键字不能在静态(static)方法里面使用
---------------------------------------------------
在Java中,同一个类不允许出现相同的方法
什么样的方法是相同方法?
1:方法名相同,2:参数相同[参数的个数,类型,顺序]

 ========================================================================》》
一:什么叫方法的重载?
一个类中出现多个方法名相同参数不同的方法———
我们称之为方法重载普通方法和构造方法都可以重载

二:方法的重载有什么好处呢?
1.提高程序的灵活度
2.有利于后期项目的维护与管理
3.符合软件设计中的开闭原则

三:什么样的几个方法我们称之为方法的重载?
1.同一个类
2.方法名相同
3.参数不同(个数,类型,顺序)

 ========================================================================》》

1:继承的概念
父类的特征属性传递给子类,我们称之为子类
继承父类。
2:什么样的关系才能满足继承?
A:两个类之间满足is a的关系
B:两个类之间存在层次关系
3:使用继承有什么好处?
write once,only once:写一次,只写一次
提高了代码的复用性
4:Java中使用什么关键字实现两个类之间的继承?
extends
-------------------------------------------------
* 1:父类 对象名=new 父类();自己能调用自己的方法和属性
* 2:子类 对象名=new 子类();可以调用自己特有方法和属性,也能调用继承到的方法和属性, 如果子类和父类出现相同方法,采用就近原则调用子类里面的方法

* 3:父类 对象名=new 子类();
* 调用属性和方法时,先看父类有没有,如果没有,直接出错
* 如果父类有,则看子类有没有对这个方法进行改变,如果
* 有,则使用子类的,如果没有,则使用父类的
--------------------------------------------------
方法的重载:overload(多个并存)
方法的重写:override(覆盖)
---------------------------------
什么叫方法的重写?
【在子类中,子类对父类中继承到的方法的改变称之为方法的重写】
方法重写的标准
1:父类与子类之间
2.重写的方法要求(方法名、参数、返回值类型)和被重写方法一致
3.重写的方法要求访问修饰符要(大于或等于)被重写的方法
例如:父类中有一个sayHello方法
void sayHello(String){
}
子类重写父类中sayHello方法应该有如下形式
A:
void sayHello(String){
}
B:
public void sayHello(String){
}

--------------------------------------------------

this:当前对象的引用
super:当前对象的父类对象引用
当在子类中需要调用父类的方法和属性时,可以用
super关键字调用
----------------------------------------------------

两个类一旦建立继承关系,当实例化子类时
默认先调用父类中一个不带参数的构造方法
实例化一个父类对象,然后再实例化子类对象
------------------------------
super()方法用来调用父类的构造方法
例如:super()调用父类不带参数的构造方法
super("abc")调用父类带一个字符串类型参数的方法
super("bac",23)调用父类带两个参数的构造方法
super()必须是在子类构造方法(第一行)调用

原文地址:https://www.cnblogs.com/popo669/p/9458070.html