Java基础部分

一:Java基础部分

1:基本数据类型

  java语言有8种基本数据类型:六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte(占1个字节),short(占2个字节),int(占4个字节),long(占8个字节),float(占4个字节),double(占8个字节),char(占2个字节),boolean(占1个字节)。

byte

byte数据类型是8位、有符号的,以二进制补码表示的整数;

最小值是-128-2^7);

最大值是1272^7-1);

默认值是0

byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;

例子:byte a = 100byte b = -50

short

short数据类型是16位、有符号的以二进制补码表示的整数

最小值是-32768-2^15);

最大值是327672^15 – 1);

Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;

默认值是0

例子:short s = 1000short r = -20000

int

int数据类型是32位、有符号的以二进制补码表示的整数;

最小值是-2,147,483,648-2^31);

最大值是2,147,485,6472^31 – 1);

一般地整型变量默认为int类型;

默认值是0

例子:int a = 100000, int b = -200000

long

long数据类型是64位、有符号的以二进制补码表示的整数;

最小值是-9,223,372,036,854,775,808-2^63);

最大值是9,223,372,036,854,775,8072^63 -1);

这种类型主要使用在需要比较大整数的系统上;

默认值是0L

例子: long a = 100000Lint b = -200000L

float

float数据类型是单精度、32位、符合IEEE 754标准的浮点数;

float在储存大型浮点数组的时候可节省内存空间;

默认值是0.0f

浮点数不能用来表示精确的值,如货币;

例子:float f1 = 234.5f

double

double数据类型是双精度、64位、符合IEEE 754标准的浮点数;

浮点数的默认类型为double类型;

double类型同样不能表示精确的值,如货币;

默认值是0.0f

例子:double d1 = 123.4

boolean

boolean数据类型表示一位的信息;

只有两个取值:truefalse

这种类型只作为一种标志来记录true/false情况;

默认值是false

例子:boolean one = true

char

char类型是一个单一的16Unicode字符;

最小值是’\u0000’(即为0);

最大值是’\uffff’(即为65,535);

char数据类型可以储存任何字符;

例子:char letter = ‘A’

 

2:Java命名规则:Java是大小写敏感的

  包名:由字母组成,所有字母必须小写,比如com.whir.xxx

  类名,接口名:所有单词首字母大写,比如TestXxx

  变量名,函数名:第一个单词小写,其他单词首字母大写,比如xxxYyyZzz

常量名:所有字母大写,多单词用下划线分割,比如,XXX_YYY_ZZZ

 

3:运算符优先级:

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

+ + – !〜

从右到左

乘性

* /%

左到右

加性

+ –

左到右

移位

>> >>>  <<

左到右

关系

>> = << =

左到右

相等

==  !=

左到右

按位与

左到右

按位异或

^

左到右

按位或

|

左到右

逻辑与

&&

左到右

逻辑或

| |

左到右

条件

?:

从右到左

赋值

= + = – = * = / =%= >> = << =&= ^ = | =

从右到左

逗号

左到右

 

4:JKD1.7 switch表达式的值支持字符串,比如swtich("星期一")  

    switch语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

语法

switch语法格式如下:

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

switch语句有如下规则:

switch语句中的变量类型只能为byteshortint或者char

switch语句可以拥有多个case语句。每个case后面跟一个要比较的值和冒号。

case语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

当变量的值与case语句的值相等时,那么case语句之后的语句开始执行,直到break语句出现才会跳出switch语句。3

当遇到break语句时,switch语句终止。程序跳转到switch语句后面的语句执行。case语句不必须要包含break语句。如果没有break语句出现,程序会继续执行下一条case语句,直到出现break语句。

switch语句可以包含一个default分支,该分支必须是switch语句的最后一个分支。default在没有case语句的值和变量值相等的时候执行。default分支不需要break语句。

 

5:增强for循环(遍历集合时很好用

 

  格式:for(数据类型 变量名:被遍历的集合(Collection)或数组)   {} 

二:类、对象及特性

1:类和对象

    对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

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

 

2:权限修饰符

 

Java语言的修饰符主要分为以下两类:

访问修饰符

非访问修饰符

 

访问控制修饰符

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。

默认的,也称为default,在同一包内可见,不使用任何修饰符。

私有的,以private修饰符指定,在同一类内可见。

共有的,以public修饰符指定,对所有类可见。

受保护的,以protected修饰符指定,对同一包内的类和所有子类可见。

 

访问控制和继承

请注意以下方法继承的规则:

父类中声明为public的方法在子类中也必须为public

父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private

父类中默认修饰符声明的方法,能够在子类中声明为private

父类中声明为private的方法,不能够被继承。

非访问修饰符

为了实现一些其他的功能,Java也提供了许多非访问修饰符。

static修饰符,用来创建类方法和类变量。

Final修饰符,用来修饰类、方法和变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

Abstract修饰符,用来创建抽象类和抽象方法。

Synchronizedvolatile修饰符,主要用于线程的编程。

 

3:this关键字:代表本类对象,哪个对象调用this所在的函数,this就代表哪个对象

 

4:构造函数

  一个类中默认会有一个空参数的构造函数,其权限和所属类的权限一致

  作用是给对象进行初始化,对象一建立就会调用与之对应的构造函数。  


5:Java语言的特性

  封装:隐藏对象属性和实现细节,仅对外提供公共访问方式,提高复用性和安全性

  继承:必须类与类间有关系才能继承,提高代码复用性,java只支持单继承,但是可以有多层继承,但是可以用实现来弥补

  子类为什么一定要访问父类的构造函数呢:因为父类中的数据,子类是可以直接获取的,所以子类对象在建立的时候,需要先查看父类是如何对这些数据进行初始化的,如果要指定父类中指定的构造函数,可以手动定义super语句来实现。


  多态:某一类事物的多种存在形态

  多态的实现:父类的引用指向了自己的子类对象(向上转型)

  多态的前提:类与类之间有关系,继承或实现,通常还存在覆盖

  多态的好处:提高程序扩展性,弊端:父类引用只能访问父类中成员。

 

6:抽象类

  抽象方法一定在抽象类中

  抽象方法和抽象类必须被关键字abstract修饰

  抽象类不能用new创建对象,不能实例化,因为没意义,方法没内容

  抽象类中的抽象方法要被使用,必须由子类重写所有的抽象方法后,建立子类对象调用

 

7:接口

  接口是对外暴露的规则,是程序的功能扩展,接口可以用来多实现,类与接口是实现关系,类可以继承一个类的同时实现多个接口,接口与接口间可有继承关系。

  接口是特殊的抽象类,接口成员有固定修饰符,常量:public static final 方法:public abstract

接口不能创建对象,被子类实现后,子类需重写接口中所有抽象方法,这样子类才能实例化,否则子类还是一个抽象类。

 

8:重写与重载

  重写:是对父类方法的重写,子父类方法要一模一样

  重载:同名函数的参数列表不同

9:内部类

  描述事物时,事物内部还有事物,该事物可用内部类描述,比如人体类里有器官类,

Java的内部类构造时持有对外部类的应用,C++不会,这一点和C++不一样。这点容易引起内存泄露,要注意.

  在Java中,非静态的内部类和匿名内部类都会隐式地持有其外部类的引用。静态的内部类不会持有外部类的引用。可以参考这里:

"失效"private修饰符

  内部类访问规则:

  内部类可直接访问外部类(这里的意思当然就是包含内部类的类)中成员,包括私有

  外部类要访问内部类,必须建立内部类对象

  内部类可被static修饰,此时其只能访问静态成员了。但是内部类定义在局部时,也就是在外部类的方法中定义一个类,此时的内部类是不能被成员修饰符修饰的,此时仍能访问外部类中的成员,并只能访问其所在的局部中的被final关键字修饰的局部变量。

匿名内部类,这个在开发中也是可以用的,这个一般是继承或实现一个类,调用或重写其方法时方便的使用,缺点是可读性较差。。。

 

10:异常处理机制

  java两个重要特性,垃圾回收机制和异常处理机制,使得java没有内存泄露,实现平台无关。

 这个地方注意catch捕捉到异常后要有个处理,不要不写也不要直接toString,printStackTrace(),要处理哦。还有一些必须执行的语句要放到finally代码块中,比如数据库的关闭等。

  throwsthrow区别:

     throws使用在函数上,throw使用在函数内

     throws后面跟异常类名,可以跟多个,逗号隔开,throw后跟异常对象。

  自定义异常类,只需继承Exception类,自定义输出内容的话,在构造函数里调用Exception类的构造函数,写super(str)即可,这个str就是你构造函数参数,也就是你自定义的输出内容,哈哈。。。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值