黑马程序员技术交流社区

标题: 【黑马程序员合肥】Java基础总结 [打印本页]

作者: 项老师    时间: 2017-7-25 09:58
标题: 【黑马程序员合肥】Java基础总结
本帖最后由 合肥就业部 于 2017-7-25 11:27 编辑

【黑马程序员合肥】Java基础总结
    黑马程序员的javaEE课程主要分为2个部分:java基础+java就业。今天就简单的给大家总结一下咱们java基础的知识。
注:Java采用Unicode符号集,每个字符占2个字节,无论英文还是中文还是其他字符。
标识符
为变量、类或方法起的名称
以字母,下划线、或者$符号开头
由字母、数字、下划线或者$符号开头
区分大小写,没有长度限制,不能使用关键字
尽量取得容易辨识,见名知意
如:identifier、userName、user_Name、_sys_varl、$change
基本数据类型
Java定义了8中基本数据类型
[AppleScript] 纯文本查看 复制代码
/**
* @author  传智播客
*/
布尔值----boolean(只有true和false两种类型)
字符-------char ( 16 位的Unicode字符 用单引号( '' )标注;'a'表示字母a     '\t' 表示制表符     '\u????'中?用确切的代替   申明并且初始化: char c = 'A'    申明变量  char ch1,ch2)
整数--------byte (8位) short(16)  int(32)  long(64)【以0开头表示八进制 ;以0x开始表示16进制】
浮点型-----float   double
变量
必须在类的内部【可以在方法外也可以在方法类】
在方法类定义的变量叫做局部变量,需要显示的初始化
成员变量和类变量【对象】自动初始化【数字初始化为0,对象初始化为null】
常量
在程序运行中,其值保持不变的量
不同数据类型间的相互转换【封装Wrapper类】
Java中类的定义:
[AppleScript] 纯文本查看 复制代码
/**
* @author  传智播客
*/
<修饰符> Class <类名>{
  <属性申明>;
  <构造器申明>;
  <方法申明>;
}

成员变量申明:
[AppleScript] 纯文本查看 复制代码
<修饰符> <类型>  <名称>;
修饰符:
[AppleScript] 纯文本查看 复制代码
/**
* @author  传智播客
*/
final:修饰常量,常量的值不能被修改【例如 final int CONSTANT = 50;】
static:申明静态变量[类变量] static int nCount;
方法的申明:
[AppleScript] 纯文本查看 复制代码
/**
* @author  传智播客
*/
<修饰符> <返回值类型> <名称>[参数列表]{
    语句;
}
方法参数的传递方式:
1、值传递:形参是基本数据类型,方法调用时,实际参数把值传递给形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容;是两个不同的存储单元,所以方法执行中,形式参数值的改变不会影响实际参数的值。
2、引用传递:形参类型是引用数据类型【传递地址】,方法调用时,实际参数是对象或者数组,这时,形式参数和实际参数指向的是同一地址,方法执行中,对形式参数的操作实际上是对实际参数的操作,这个结果在方法结束后被保留了下来,所以对形式参数的操作实际上就是对实际参数的操作。
构造器申明:
[AppleScript] 纯文本查看 复制代码
/**
* @author  传智播客
*/
<修饰符>  <类名>[参数列表]{
    语句;
}
注释:构造器没有返回值,void也不行;如果有返回值,方法会被当做普通函数执行;
构造器函数特点:
1、作用:完成对类对象的初始化
2、名称必须和类名相同
3、不能有返回值,不能有 return 语句
4、一般申明为Public类型
构造器的使用:
1、不能现实的调用
2、在创建一个类的对象时,系统自动调用构造器为该对象初始化
3、构造器只能和new关键字一起使用
格式:
类名  对象名   =  new 构造函数名称(成员变量的初始值) ;
默认构造器:
1、每个类至少有一个构造器
2、如果不编写构造函数,系统自动添加默认的构造函数【默认构造函数不带参数,默认构造函数函数体为空】
3、不必编写构造函数就能使用new XXX()  创建实例
对象创建格式:
<对象名> = new <类名>(实参)
对象的清除
对象为null时,Java自动调用垃圾回收机制清除对象,释放对象占用的内存空间
手动编写finalize() 方法撤销对象   -- 不提倡
对象的内存模型:
栈内存:方法中定义的变量(基本类型和引用类型)。超过变量的作用域,自动释放变量的内存
堆内存:new 创建的对象(包括数组),由系统自动回收
类的继承【仅支持单继承】
[AppleScript] 纯文本查看 复制代码
/**
* @author  传智播客
*/
<修饰符> class <名称> extends <父类>{
    申明;
}
子类可以继承父类中非private的方法和属性;子类可以添加新的属性和方法;【程序代码重,减少冗余】
方法的重载(overload):
1、一个类中有多个同名的方法
2、条件:参数的个数不同;参数的类型不同
3、如果两个方法只有返回值不一样,不是重载,会报错
方法的覆盖(override):
1、子类可以修改父类继承过来的行为
2、子类可以创建和父类的方法不同功能的方法,但是下面必须相同:【方法名、返回值、参数列表】
super关键字:
往往在覆盖方法时,真正不目的不是代替现有的行为,而是在某些方面扩展那些行为;
类中使用super关键字指向父类的成员 包括数据和方法;
3中使用方法:
super.方法名([参数表]);  ---- 调用父类的方法
super.成员变量名;       ---- 访问父类的成员变量
super([参数表]);        ----  调用父类的构造函数
构造函数不能被继承:
子类从父类继承所有的方法和变量
子类不能继承父类的构造函数
有两种方式可以获取构造函数:1、使用默认的构造函数 2、编写1个或者多个构造函数
调用父类的构造函数:
要调用父类的构造函数,必须在子类构造函数的第一行使用super关键字
要调用特定的父类的构造函数,必须为super提供参数
如果没有this或者super调用,编译器会插入一个对父类无参数构造函数的隐式调用:
super();
变量的多态:
类型为X的参考变量,指向的对象类型既可以是X,也可以是X的子类;
如: Employee x = new Manager();    Employee y = new Employee();
实例方法能够被覆盖,静态(static) 方法不能被覆盖
原因:
静态方法在编译时候,根据调用该方法的类或者对象所属的类决定
实例方法在运行时根据对象所属的类决定
如:Super s = new Sub();   编译时候S是Super类的对象,运行时 S 指向Sub类的对象;
instanceof操作符:
可以根据对象所属的类进行不同的处理
抽象类:只能被继承,不能被实例化的类
定义格式:
[AppleScript] 纯文本查看 复制代码
/**
* @author  传智播客
*/
abstract class 类名{
  abstract 返回值类型  方法名[参数列表];
  ...
}
说明:
抽象类中可以包含抽象方法和非抽象方法,也可以不包含抽象方法和非抽象方法;只要有一个抽象方法,就属于抽象类;
[AppleScript] 纯文本查看 复制代码
/**
* @author  传智播客
*/
abstract class Animal{
    public abstract void eat();
    }
class Dog extends Animal{
     public void eat(){System.out.println("狗吃骨头");}
}

class Cat extends Animal{
      public void eat(){System.out.println("猫吃老鼠");}
}

class Wolf extends Animal{
      public void eat(){System.out.println("狼吃羊");}
}
说明:不能创建抽象类的对象,即不能被实例化;
            使用时,必须用起创建子类
            子类可以定义自己的成员变量和方法,但是必须将父类的所有抽象方法代码写完;
            如果子类只是实现了部分抽象的方法,那么,该类仍然是抽象类;
最终类:
final 类不能被子类化;如Java.lang.String 是final 类,这样做是基于安全的考虑;
标记为final的方法不能被覆盖;处于安全的考虑,如果方法的实现不应改变,而且对对象的一致性要求比较高,则可以创建一个final方法。
标记为final的变量代表常量,只能一次赋值;
接口:
使用interface关键字申明,可以支持多重继承
接口中只能包含:
抽象方法;
常量(默认为 public static final )【用得较少】
说明:
1、接口本身只是提供定义,使用时,必须通过类实现接口( implements ) 实现接口时,必须实现所有的方法。否则该类还是抽象类( abstract class )。
2、一个雷尅实现多个接口。
3、扩展子句(extends )必须在实现子句( implements )之前
包:
package   <顶层包名>[.<子包名>]*;
如:package shipping.domain;
说明:
1、如果有包申明,必须在源文件开始处申明。他的前面只能有空白和注释,不能有其他语句;
2、每个源文件只能有一个包申明;
3、如果没有包申明,则该类属于"默认"包(没有名称的包)
4、包的名称有层次,且用 . 分开;
import语句:
基本语法:
import <包名>[.<子包名>].<类名>
或者import <包名>[.<子包名>].*;
   其实在学习java过程中基础还是比较容易,如果大家想学习java基础的知识,欢迎大家可以去传智播客官网http://www.itheima.com/去了解java基础知识!



作者: 真真姐    时间: 2017-7-25 11:39
基础班学完再看这个帖子用来巩固太好了
作者: 735110757    时间: 2017-7-25 11:42
很好用,顶一个{:8_472:}
作者: 用心去浪    时间: 2017-7-25 11:45
不仅可以复习还预习了很多知识点
作者: 小皖妹妹    时间: 2017-7-25 11:50
大家加油呀~~
作者: zmr7013645    时间: 2017-7-28 10:22
很好很好 帮助再复习一次
作者: 0拂晓0    时间: 2017-7-28 15:21
instanceof操作符:
可以根据对象所属的类进行不同的处理
这个没具体说明

2、一个雷尅实现多个接口。
有错字哦
作者: Port    时间: 2017-8-2 18:28
格式不怎么好看呢

作者: hguilin    时间: 2017-9-20 12:02
这就是我们的老师,猛的不要不要的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2