j2se基础语法笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pickers/article/details/79251884

前言:这篇总结是基于head first java整理而来,本人接触java已有一段时间,但是由于本人后来选择了嵌入式,导致java全部忘干净了,基本j2se语法应该看了三四遍,甚至学习过培训视频,对于后台服务器像jsp,servlet也弄过,之前花费长达一个多月学习并做了个简单的购物商城,当时并没有用spring,springboot,structs,mybatis,hibernate等框架,知识简单的基于jsp显示,servlet处理,利用mvc三层架构,tomcat+mysql弄的一个简单的商城。



一:java类和对象

 1. java中的所有方法或者变量都在类里面,因为java是面向对象的语言。
 2 .一个工程只能有一个main函数
 3. while(ture);这个TRUE必须是布尔类型,不像其他语言的用整形代替来判断。
 4 对象是类的实现,类相当于一个模板,对象相当于一个类的实例化。
 5 java所有的都是类,包含main的那个类是测试类,是整个工程的入口。
 6 对象在堆上创建,但是这个堆是可回收的,有java回收机制,之后会详细叙述。
 7 不同类的相同方法可以抽象为一个父类,子类继承父类的方法和变量,子类也可重写父类方法,之 后会详细  介绍。
 8 相比c面向过程和汇编(基本就是顺序执行代码的),java这种面向对象是代码模块化,一个类可以多次使用,  方便管理,而且编译之后基本不用多做改动,现在比较大的c工程一般都是面向过程的,即使不同的方法分  别放在不同的头文件和cpp文件里,但是从某些方面来说,管理很不好管理。

二:对象变量引用和数据变量
 1 常识
 1、栈区(stack)— 由 编译器 自动分配释放 ,存放 函数 的参数值, 局部变量 的值等。其操作方式类似于数据结构中的栈。
 2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒 是类似于 链表
 3、全局区(静态区)(static)— 全局变量和 静态变量 的存储是放在一块的,初始化的 全局变量 和静态变量在一块区域, 未初始化的 全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
 4、文字常量区 — 常量字符串就是放在这里的,程序结束后由系统释放 。
 5、程序代码区 — 存放函数体的二进制代码。
 2 数据变量
 数据变量有六种,每种都对应不同的字节数,他们的变量名是地址,变量值就是实际对应的值。
 3引用变量
 之前和数据变量类似,不同的是,变量值是一个字节序值,指向位于堆里的对象,具体字节序数目由JVM规定,本身引用还是存储在  栈上的。但是相同的JVM的引用字节数是相同的,不同JVM不同,所以可能会出现某种虚拟机的引用大于另一种引用的情况。还有就是说  申明了一个引用对象,这个对象只能引用为相同的类型,但可以引用相同类型的不同实例化,但假若被final关键词修饰之后,就只能引用  固定类型的固定对象了。
 还有就是引用的大小是不能被计算的。。
 如果引用变量没有指向,默认为null。
 4 补充:
 变量名是给编译器看的,编译器根据变量是局部还是全局分配内存地址或栈空间,所谓的变量名在内 存中不存在,操作时转换成地址数存放在寄存器中了。其实可以理解为是符号表起到了连接作用。全局变 量和静态变量包括数组默认初始化为0,局部变量默认初始化为乱的。
 5 数组
  数组是一个对象,不管是数据类型数组或者是引用类型数组,地址在栈里,引用到堆里的数据。

三 继承多态和一些关键词
 继承 extends
子类继承父类的变量和方法,并且子类对父类的方法可以进行重写,即覆盖,同时,子
类也 可以仅仅添加父类方法中的一些行为,可使用super关键词来引用父类的行为。
同时父类也可以对子类的继承内容进行限定,即权限设置
private:被此方法修饰,子类无法继承父类
public:被此方法修饰,子类可以继承父类
用final修饰这个类表示此类不可被继承
用final修饰这个方法表示此方法不可被重写
 多态
父类对象引用指向子类对象。
java中所有的类都继承自Object,Object对象是非抽象的,如果一个object类型的引用,
编译器会自动让他只能实现object本身的方法,因为java需要安全类型检测,比如
狗不会说人话等等。
多态实现的技术:动态绑定,是指在执行期间判断所引用对象的实际类型,根据其实际
的类型调用其相应的方法
 接口 interface
接口不可被实例化
接口里的所有方法都是抽象的
接口可以继承接口
 抽象 abstract
抽象类不可被实例化,含有抽象方法的类必定为抽象类,抽象类可不含抽象方法,但这
样毫无意义。
 静态变量 静态变量必须初始化,有两种初始化方式,一种是直接复制,一种是在类似static{}里面赋
 值。
使用事项:
1)静态函数初始化在于构造函数之前,类具体被加载的时间是由java虚拟机管控的,一般是
在初始化时加载。具体关于类的加载之后会详细介绍。
2)静态变量只会初始化一次,而且会在该类静态方法之前,可用在统计某个类被调用的次
数上。
3)静态方法不能包含非静态的成员变量,因为静态方法调用时,这个成员变量还不存。
4)非静态方法可以调用成员变量
5)访问静态方法和静态变量时,可用类名.变量的形式,也可new对象访问,但这样毫无意
义。
6)构造方法不能被标记为静态的。
 final
    1)final修饰的变量不能被修改
 2)final修饰的方法不能被重写
 3)final修饰的类不能被继承
 关于常量:一把用public static final int PI=11;这种形式,变量名大写。
 关于异常:finally忽视return的优先级,会在try catch finally都执行玩才会执行其中的finally

四 文件网络集合与泛型
1)Serializable
序列化,序列化其实只是个接口标记,实现序列化的所有子类皆可实现序列化,序列化后的对象可以直接写到文件中保存。静态变量      不会被序列化。
2)transient 瞬时 修饰的变量表示这个变量不会被序列化。
3)关于文件操作
 FileReader/FileWriter都是没有缓冲区的,直接进行操作的流,可用其他的流进行封装达到快速读取的效果。

五 注意点
局部变量:声明在方法里面,一定要被初始化。
实例变量:声明在类里面方法外面,在java中,默认的实例变量是有初始值的0,false或是null。
加强版for循环 for(int i:b)其中‘:’类似in
数组与arrayList
Same;对象都存储在堆上。
Different:数组元素可读但不可删除和增加数组长度。而ArrayList可以。
JDK5.0之后,arraylist可以参数化了
ArratList<String> a=new ArrayList<String>();
ArratList a=new ArrayList();



 







猜你喜欢

转载自blog.csdn.net/pickers/article/details/79251884