java核心基础_Java核心基础 - 惊觉

数据类型

分为两大类:基本数据类型、引用数据类型

基本数据类型:

数据类型特点byte8位 -128~127

short16位 -32768~32767

int32位 -2147483648~2147483647

long64位 -263~263-1

float32位 具体见IEEE 754标准

double64位 具体见IEEE 754标准

boolean1位 true/false

char16位 0~65535

引用数据类型:

类、接口、数组……

数据类型转换:

(1)自动类型转换

byte→short(char)→int→long→float→double

(2)强制类型转换

上述链接的逆向.

int a=123;

byte b=(byte) a;

常量和变量

常量定义:

private static final double pi= 3.14;

转义字符含义\ddd1~3位八进制所表示的字符

\uxxxx1~4位十六进制数所表示的字符

\’单引号字符

\"双引号字符

\\反斜线字符

\r回车

\n换行

\b退格

\t制表符

变量:

分为成员变量和局部变量

成员变量:包括实例变量和类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用.

(1)定义在方法外

(2)整个类中都可以使用

(3)有默认初始值,int默认为0,float默认为0.0f,double默认为0.0

(4)位于堆内存

(5)随着对象的创建而创建,随着对象的消失而消失(实例变量)随着类的装载而创建,随着类的卸载而消失(类变量)

局部变量:1.方法参数(形参)2.方法局部变量(方法内定义)3.代码块局部变量(代码块中定义)

(1)定义在方法内部

(2)只适用于方法中

(3)没有默认初始值,需要手动赋值才能使用

(4)位于栈内存

(5)在调用对应方法时,局部变量因为执行创建语句而存在,超出自己的作用域则立即消失

运算符和表达式

算术运算符:+,-,*,/,%,++,- -

关系运算符:==,!=,>,=,<=

逻辑运算符:&&,||,!

赋值运算符:=,+=,-=,*=,/=,%=

位运算符:<<=,>>=,&=,^=,|=

流程控制语句

switch语句:

(1)变量类型可以是byte,short,int,char

(2)每个case后面要跟上比较的值和冒号

(3)当变量和case中的值相同时,case后的语句开始执行,直到break

(4)如果没有break,程序会继续执行下一条case,直到出现break

(5)可以包含default分支,它必须是最后一个分支,不需要break

面向对象的三大特性

1.封装

将对象的属性和行为进行包装,不需要让外界知道具体实现的细节,只能通过定义的接口进行访问。

优点:减少耦合;可以自由修改内部结构;可以精确控制成员变量;隐藏信息,实现细节。

2.继承

通过继承,可以更有效率地对原有类的功能进行扩展。增强代码复用性,提高开发效率,为程序修改、补充提供便利。

Java中继承要使用extends关键字,只允许单继承。子类只能继承父类中可以访问的属性和方法。

(1)能继承父类public和protected的成员变量和方法,不能继承父类private的成员变量和方法

(2)对于父类的包访问权限成员变量和方法(default),如果子类和父类再同一个包下,则可以继承,否则不能

(3)如果子类的成员变量(方法)覆盖了父类的,则需要调用super关键字来引用

3.多态

多态是同一个行为具有多个不同表现形式或形态的能力。

可以把子类看成父类的对象,因此父类可以是很多种类型。

特性:对象实例确定则不可改变;只能调用编译时的类型所定义的方法;运行时会根据运行时的类型去调用相应类型中定义的方法。

类和对象

类是一个模板,描述一类对象的行为和状态。

对象是类的一个实例,有状态和行为。

1.类

类的声明:

public class sd {

}

类的方法定义:

public int f(int k){

return k*k;

}

2.对象

对象的创建:

sd n=new sd();

构造方法:

(1)名称与类的名称完全相同

(2)不返回任何类型,不需要用void修饰

(3)作用是创建一个对象并初始化成员变量

(4)创建对象时,系统会自动调用构造方法

(5)一般用public修饰

(6)如果不定义构造方法,系统将提供一个默认的不带参数的方法体为空的构造方法

(7)构造方法可以重载,但是不能被继承

(8)不能被static,final,synchronized,abstract,native修饰

抽象类和抽象方法

1.使用原则

(1)必须是public或者protected

(2)不能直接实例化

(3)必须有子类

(4)子类如果不是抽象类,则必须重写全部抽象方法

(5)不能用final修饰,因为final不能有子类

(6)抽象类中不一定含有抽象方法,有抽象方法的类一定是抽象类

(7)抽象方法不能含有方法体

(8)构造方法,类方法不能是抽象方法

2.抽象方法的声明

abstract int f(int k);

抽象类可以继承实体类,前提是实体类必须要有明确的构造函数。

抽象类可以实现接口。

接口

1.接口的声明

public interface inter1 extends inter2,inter3{

}

2.接口的实现

public class sd implements inter1{

}

3.接口和抽象类的异同

相同点:

(1)都可以被继承

(2)都不能被直接实例化

(3)都可以包含抽象方法

(4)派生类必须实现未实现的方法

不同点:

(1)接口支持多继承,抽象类只能单继承

(2)一个类只能继承一个抽象类,却可以实现多个接口

(3)接口中的成员变量只能是public、static、final类型的;抽象类中的成员变量可以是各种类型的

(4)接口只能定义抽象方法;抽象类都能定义

(5)接口中不能含有静态代码块和静态方法;抽象类中可以有

其他一些问题

Java中的访问修饰符:

(1)public:可以跨类、跨包访问

(2)private:只能被该类本身访问

(3)protected:只能被本类及其子类访问

(4)default:只能在同一个包中进行访问

方法重载和方法覆盖:

重载:定义在同一个类中,方法名相同,参数个数、顺序、类型不同

目的:解决参数个数、类型、顺序不一致,但方法名一致的重命名问题

特点:

(1)发生在同一个类中

(2)方法名称相同

(3)参数个数、顺序、类型不同

(4)和返回值类型、访问修饰符、异常声明没有关系

(5)是多态的一种表现形式

覆盖:改写父类继承到子类的方法

目的:父类的功能实现无法满足需求,需要重写

特点:

(1)发生在具有父子关系的两个类中

(2)方法名称相同

(3)参数列表完全相同

(4)返回值类型必须相同

(5)访问修饰符不能严于父类

(6)覆盖是多态的必要条件

(7)抛出的异常不能比父类的异常大

(8)private的方法不能被覆盖

(9)构造方法不能被覆盖

值传递和引用传递:

值传递:将参数递给函数时,函数只接受一份副本。

引用传递:函数接收原始值的内存地址,修改该参数的值会使原始值进行改变。

Java中只有值传递参数。

由于Java中没有指针,所以没有引用传递参数。

Java用引用传递对象不意味着用引用传递参数。参数可以是对象引用。

类的反射:

(1)得到一个对象所属的类

(2)获取一个类所有的变量和方法

(3)在运行时创建对象

(4)在运行时调用对象的方法

获取Class类的三种方法:

Class class1 = Class.forName("User");

Class class2=User.class;

User user=new User();

Class class3=user.getClass();

获取对象实例:

//构造方法没有参数

User user1=(User)class1.newInstance();

//构造方法有参数

Constructor constructor=class2.getConstructor(String.class,Integer.class);

User user2=(User)constructor.newInstance("a",1);

Java创建对象方式:

(1)new语句

(2)反射机制的Class类的newInstance()方法

(3)通过clone()方法

(4)反序列化

转载自CSDN-专业IT技术社区

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值