J2SE学习历程
2014/12/09
1、+两边有字符串的话,则另外的先转换为字符串再连接。
int c = 12;
System.out.println(“c=” + c);
2、如果a=2,b=a++,先赋值再运算,b为2,a为3;b=++a,先运算再赋值,b为3,a为3.
2014/12/10
1、 if、else、else if、for后需要执行的如果只有一句,可省略大括号。(不过最好不要省了,危险)
2、 switch后面的括号中只能放int的变量,byte short之类可以转换成int的可以放;
switch不加break会穿透。case相当于一个入口,进入之后则下面的语句都会执行,除非加了break。
2014/12/13
1、 成员变量(即对象的数据)默认有初始值(数组也有),局部变量没有初始值,必须对其赋值后才能用。
2014/12/15
1、方法重载(overload)只能是方法的参数不同(参数类型不同或个数不同),返回值情况要相同。
void max(int a, int b){}与void max(double a,double b){}是,
void max(int a, int b){}与int max(int a,int b){}不是,且会出错。
2014/12/17
1、 import是后面接类,不是包。
2、 *只能代替类,不能代替包,比如import com.*,只能指代com中的类,不能指代com.io中的类,import com.io中的类只能用com.io.*。
3、 关于包,只有绝对包(绝对路径),没有相对包(相对路径)的说法。
4、 子类的构造过程中必须调用基类的构造方法;
子类的构造方法中用super(argument_list)调用基类构造方法,且必须在构造方法中的第一行,this(argument_list)可调用子类自己的构造方法。
如果没写super(argument_list),则默认调用无参数的基类构造方法。
2014/12/19
1、 Object中的equals方法只有当两个引用指向同一对象时才返回true。
c1 |
c2 |
第一个对象 |
第二个对象 |
上面的c1.equals(c2)将返回false,c1c2指向一个对象才返回true。
通常要重写toString()和equals()方法。字符串类(String)的equals()方法已经重写,即两个字符串一样即返回true。
2、 对象转型。
Person a =
new Person(); Student b = new Student();(学生extends人)
可以a = new
Student(),但a不可访问学生独有的数据及方法;
Student c =
(Student)a;这时a强制转换为学生后,可访问学生独有的数据及方法。
栈中的引用和堆中new的对象,二者的类型是独立的,基类引用可以指向子类对象,反之不行。但基类只能访问此对象地址中继承自基类的数据。
instanceof前面其实是引用所指对象,探测此对象的类型,而不是此引用的类型。
当需要使用子类数据时,就需要将引用强制转换为子类引用。
2014/12/20
1、 动态绑定,接上一条。当基类引用a指向子类对象时,a.方法 可调取子类重写的方法。(只有重写的方法才能动态绑定)。
2、 基类中的抽象(abstract)方法是专门用来给子类重写的。类中有抽象方法,则此类必须为抽象类。抽象类不能new出来(不能实例化),不过可以创建这种类型的引用,指向其非抽象的子类。
3、 final关键字。变量不能改变其值,方法不能被重写,类不能被继承。
4、 接口(interface)。其中数据必须是public static
final的(写不写都行,不写也默认是这个),方法都是抽象的,不写abstract。
5、 接口可以像基类一样进行对象转型和引用指向子类。规则相同。接口互相之间可以继承(extends)。
6、 方法抛出异常需要两个操作:a、方法名后面写throws
exception;b、方法里写throw
new exception()(即将对应类型的异常抛出)。
a、 throw new exception()——throws exception——catch相当于一个通道;
b、 throw new exception()抛出的异常必须在throws中有,否则会说此异常未处理;
c、 throws exception可以写任意类型异常,只要包含方法里throw的异常就ok,写了throws,必须写catch(不一定在本层catch),不管方法里有没有throw;
d、 写了throws的异常类型,必须要配套写catch,如果方法后面没有立即catch,他的上层总有一块要catch。
e、 throw的类 < throws的类 = catch(包含上层的catch)的类;
7、 重写方法需要抛出与原方法一致的异常类型或不抛异常。
2014/12/22
1、 java的数组也是引用类型(只有8种基础数据类型不是引用类型),数组的值存在堆中,引用存在栈中。也要new。
2、 数组的值会初始化,按成员变量的规则进行初始化。
3、 对引用类型(即对象)构成的数组,为下面的形式。数组的值中保存引用,而不是对象,数组的值作为引用再指向实际的对象:
Date[] days; days
= new Date[2]; 循环:days[i] = new Date(2004,4,i +1);
Date[] days;在栈中生成数组的引用;
days = new
Date[2];将堆中数组的值赋值为Date类的引用;
days[i] = new
Date(2004,4,i +1);在堆中生成对象,并用数组中保存的引用指向他们。
4、 引用类型构成的数组,初始化的值为null;
2014/12/31
1、 比较字符串时。equals方法比较值是否相等,“==”比较两个对象地址是否相同,即是否指向同一对象。
String a="1234";
String b="1234";
String c = new String("1234");
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a.equals(c));
输出为true false true。
说明不用new的时候,字符串是共用的。
2015/1/21
1、 二维数组在java中是“数组的数组”。声明方法:
int a[][] =
{{1,2};{2,3};{3,4,5}};
或:
int a[][] =
new int[3][5];
或:
int a[][] =
new int[3][];
a[0] = new
int[2];
a[1] = new
int[3];
a[2] = new
int[5];
只有前一个中括号要先声明出来(或者同时声明),后一个才能再声明。
int a[][] = new int[][]是不行的。
2015/1/24
1、 valueOf(String s)方法,各基础类型包装类有,返回字符串的该类型数据。(例如int a = Integer.valueOf(“123”),如果没法转成对应数据的话,比如“zcx”不能转成int,则throws NumberFormatException);反过来也有各基础类型到字符串的valueOf()
toString()方法,各类均有,返回对象对应的字符串。一般要将其重写。
2、 向数组中填值,必须先指定数组的长度,或者直接用{a,b,c}的方法一次全部指定;不能一个一个的填。
2015/1/25
1、 定义文件的路径时,建议采用两种方式:String directory = “mydir1” + separator + “mydir2”;或String directory = “mydir1/mydir2”;
2015/3/10
1、 容器。在
容器.remove(something) 时,something会与容器中所有对象进行equals,
equals为true的被remove。所以加入容器的对象,有必要将equals重写,且有必要使equals的两个对象的hashCode相等(将hashCode也重写)。
2015/3/15
1、 I/O流。输出时,先flush再关闭。否则可能数据还未写完输出管道就被关了(在用内存缓冲区的时候)。
2015/3/25
1、 io的类,Reader,Writer,InputStream,Outputstream。这是最基本的四类。他们不能直接用,要用他们的子类。子类中,OutputStreamWriter和InputStreamReader可以将字节流转换为字符流,剩下的方法,不能在字节流和字符流间转换。(看相关类的构造方法)
2015/7/10
1、 synchronized(this)以及synchronized属性的方法,锁定的是不同线程中运行此方法时的当前对象。仅当有两个线程同时运行相同对象的此方法时,出现互斥。此对象的其他方法不受影响,可以与其同时执行(访问此方法中正在处理的值)。
这样就会出错,所以加了synchronized(this)以及synchronized属性的方法中,处理的值,此值出现的方法都应该加synchronized。也就是,多个方法中都对某个值有操作时(rwx看情况),这些方法都应该加synchronized。
其实,加锁并不是一定在方法的层面上,synchronized(this)括住的内容才是真正互斥的,此方法中没被括住的语句执行时并不加锁。
2、 某一线程新开另一个线程时(以及放锁时),此线程的下一语句和另一线程的第一句不一定谁先执行
(不同机器差异)。所以有时要用到sleep。
2015/7/16
1、 布局管理器起作用时,组件大小和位置由布局管理器安排,setLocation(),setSize(),setBounds()都将不起作用;若想起作用,需setLayout(null)
2、 事件监听:继承ActionListener接口的类中重写actionPerformed方法;main中new出其对象a,然后b.addActionListener(a)(b为按钮之类的对象)。
main中:Button b = new Button(“Press me”);
Monitor a = new Monitor();
b.addActionListener(a);
新类:class Monitor implements
ActionListener{
public void actionPerformed(ActionEvent
e){
System.out.println("a
button has been pressed!");
}
2015/7/24
1、 持有引用:一个类A中需要另一个类B中的某个成员变量;可以在这个类A的构造方法中传入类B,在构造方法中将类B作为A的一个成员变量,即可访问B中的成员变量。
class B …
class A{
B b = null; #将类B作为A的成员变量
public A(B someone){ #在构造方法中将某个B类对象传入A的成员变量b中
this.b =
someone;
}
}
想要new A时,A a = new A(someone); someone为某个B类对象。(其实把A类写成内部类结构更好)
2015/8/16
1、java类在编译时,会直接初始化静态变量;在实例化时,才会按先后顺序初始化非静态变量,然后调用构造方法。
J2SE学习历程的更多相关文章
- 点滴的积累---J2SE学习小结
点滴的积累---J2SE学习小结 什么是J2SE J2SE就是Java2的标准版,主要用于桌面应用软件的编程:包括那些构成Java语言核心的类.比方:数据库连接.接口定义.输入/输出.网络编程. 学习 ...
- 我的Linux学习历程:那些我看过的Linux书籍们
[+]查看原图http://www.ituring.com.cn/article/119401 来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为基本的计时单位.有时茫 ...
- StudyJams学习历程总结
Study Jams 是一个学习 Google 在线课程的活动.该活动由学员自发组建课程学习小组,旨在带领小组成员入门 Android 开发,最终将 Android App 上载至 Google Pl ...
- 大三仍是Linux系统小白的我给大家讲讲学习历程
我与Linux结缘是在大三的时候.我与Linux熟识是在偶然遇到<Linux就该这么学>的时候.因为我是电子信息工程专业,在高年级时开设了嵌入式课程,嵌入式系统是一种专用的计算机系统,作为 ...
- 登录模块的进化史,带大家回顾java学习历程(二)
接着前面的登录模块的进化史,带大家回顾java学习历程(一) 继续往下面讲 前面我们去实现登录功能,都是想着要完成这个功能,直接在处理实际业务的类中去开始写具体的代码一步步实现,也就是面向过程的编程. ...
- 来自一个电子狂的stm32学习历程
文章尾部有学习时的一些视频资料在学的可以看看那么我们就进入今天的主题我stm32的学习历程 在学习了51单片机之后,早已经对单片机这个东西甚有了解了,所有不管是从内部资源,还是一些常见应用,都可以说的 ...
- Linux学习历程——Centos 7重置root密码
一.自述 最近刚刚接触linux,因为我设置密码比较随性,把自己做系统的时候设置的root密码给forget,每当系统崩溃,重新把虚拟机备份还原后,就面临无法登陆的尴尬情况,只得重置root密码,好了 ...
- Nginx系列0:Nginx学习历程
Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...
- JS高级学习历程-6
PHP菜鸟学习历程-6 [闭包案例] 1 闭包创建数组 <!DOCTYPE html> <html lang="en"> <head> < ...
随机推荐
- i春秋------Misc更新
今天早上起来很开森!因为今天要打比赛了(2018年3月安恒杯线上赛),等到比赛开始得时候,发现自己登陆不上去 想了很久发现自己只是预约了比赛,并没有报名(QAQ ),心疼一下傻傻的自己.现在开始工作: ...
- 危险 AI 花名册
简评:臭不要脸 AI 名单,another side of AI. 这是一个可怕的 AI 清单,上面的各种商用 AI 项目都用于一些很恶劣的目的.请大家保持警惕. 区别对待类 · HireVue - ...
- 浅析vue2.0的diff算法
一.前言 如果不了解virtual dom,要理解diff的过程是比较困难的. 虚拟dom对应的是真实dom, 使用document.CreateElement 和 document.CreateTe ...
- ssm日期格式转换
ssm日期格式转换 1 需求 前端传入字符串类型日期转化成java中的Date类型,存入数据库中;将数据库中的日期类型通过jstl标签在前端页面转换成字符串类型. 2 步骤 2.1 ...
- Hyperledger Fabric、Corda和以太坊对比
Hyperledger Fabric . Corda 和以太坊的对比 三种不同的框架 我们从 Hyperledger Fabric.R3 Corda和以太坊的白皮书中可以看到,三种框架在可能的应用领 ...
- WebApi管理和性能测试工具WebApiBenchmarks
说到WebApi管理和测试工具其实已经非常多的了,Postman.Swagger等在管理和维护上都非常出色:在性能测试方面也有不少的工具如:wrk,bombardier,http_load和ab等等. ...
- Java8新特性之五:Optional
NullPointerException相信每个JAVA程序员都不陌生,是JAVA应用程序中最常见的异常.之前,Google Guava项目曾提出用Optional类来包装对象从而解决NullPoin ...
- 在 EFCore 定义的实体中进行 FreeSql 开发
EFCore 和 FreeSql 都是 ORM,在各自领域都有着独特的优势. 问题起源 假设某项目是使用 EFCore 开发的,且实体 特性或FluentApi 都配置好了,如: protected ...
- 【我们一起写框架】C#的AOP框架
前言 AOP,大家都是听过的,它是一种面向切面的设计模式. 不过AOP虽然是被称为设计模式,但我们应该很少能看到AOP设计的框架.为什么呢? 因为,AOP单独设计的框架几乎是无法使用的.普遍的情况是, ...
- .netcore2.1使用swagger显示接口说明文档
项目之前开发完接口后,我们还需要写接口说明文档,现在有了swagger方便了很多,可以网页版直接测试,当然了也减少了我们的工作量. 使用swagger生成接口说明文档,大致需要2个步骤 1.从“管理 ...