[font=楷体_GB2312] 前段时间逛论坛,总会有很多菜鸟很苍莽,问到:终究该如何学好Java,这个疑问很首要,格外对于像我们这么大多数都是靠自学的人来说,找到一个好的学习办法至关首要!所以乎,我就给我们答复了很多,突然间想到了很久以前,看过的马兵士老师的一篇对于Java自学之路的文章,所以在网上找了找,效果找到了,马兵士老师的视频,是我如今最为推重的Java学习视频,尽管还有很多,如张孝祥、黎活明、李兴华老师等,他们的都极好,自己早年都看过,李兴华老师的基础视频,黎活明老师的EJB,都是经典!但是自己强烈推荐老马的(尽管老马有时讲的实在是太细,连他自己都说之前的80%,都能够遗忘...甚至:接下来的你能够不听...<此处省掉N个字>),为何信赖马兵士老师?
1、马兵士老师有多年的开发阅历,十几个大型项目阅历(baidu百科有介绍)。
2、老马比照诙谐,很多的时分听着都能让人大笑(经典语录:1、豆芽长得再高,它也是颗菜!我想如何吃,就如何吃!2、你是生长在石器时代的人吗?...你是生长在...)。
3、老马的普通话比照标准,听着酣畅,清华的苗子,霸气侧漏!
4、学技术的一同,能学到很多道理。(1、给你一辆自行车,先骑着,再去研讨它的原理。2、三流公司卖产品,二流公司卖效力,一流公司卖标准)
5、老马讲课有一个非常无缺的word文档,上面明晰写了讲课内容,首要程度,而且他会在讲课的过程中明晰哪个是关键,哪个不是关键,这么我们就能够有挑选性的学习。举个比方,比方说讲到spring结构的时分,正本每个结构都希望开发者用自己来完结一切的功用,所以像spring它也供应自己的MVC,也供应包括耐久层、View层的完结,但事实是耐久层和view层我们大多时分会挑选别的的结构来做,如hibernate、ibatis、struts等,所以,对于spring来说,其它方面就不能说成是关键(当然你要悉数学习spring,这些你都应该学好)。不过老师给你讲了解这些后,如何学习,看你了。
当然,这只是我的自己建议,我们能够自己挑选喜欢的老师。
JAVA运用窍门:
1、byte通常用来进行位运算,位宽度窄,通常不必来核算
2、关键词都是小写的,在eclipse中显现为赤色。
3、变量给了缺省的初始值,C言语没给,只给分配了空间,里边的数不确定
4、char的缺省值是ASCII码中第1个
5、运转功率:i++>i+=1>i=i+1
6、布尔值不能进行巨细对比,只能进行==对比
7、先算&&再算||。别的&&为短路与的意思。
例1:判别以下i的改变。
int i=2,j=3;
boolean b=i>j && i++>2;
System.out.println(i);
答案:2
例2:以下在a,b,i不知道的情况下,判别真仍是假。
((a>b)||((3-2)>2))||(5>2)&&(true||(++i>2))
答案:真
8、>>带符号右移,前面移空的方位增加符号位相同的数
0|001 1000 右移两位(正数)
0|000 0110
1|001 1000 右移两位(负数)
1|111 1100
>>>带符号右移,前面移空的方位增加0
9、取得-5到2的随机数
int i;
Random r=new Random();
i=r.nextInt();
// i=Math.abs(i%10)+1;//取得0到10的随机数
i=Math.abs(i%8)-5;//取得-5到-2的随机数
System.out.println(i);
10、数组创立时,巨细(内存)可所以前面的变量.能够动态创立数组的巨细(内存),创立后就不能再改巨细.
例:
int t=9;
int[][] jiu;
jiu=new int[t][];
11、变量的效果域。
界说的数个变量其实是放在一个栈的结构中,后界说的变量先不见,先界说的变量后不见,效果域比后界说的变量大。
12、.根本数据类型参数的传递是值传递,
引证....................址传递.
class Length{
int length;
}
class People{
void walk(Length length){
length.length=+=2;
}
public satic void main(String[] args){
Length l=new Length();
l.length=20;
new People().walk(l);
System.out.println(l.length);
}
}
13、办法的重载,不能经过返回值类型不同来差异,只能经过参数的不同来差异.
14、办法或变量加static和
不加static的办法,是类的目标的办法.目标不见,办法不见
加static的办法,是类的办法.目标不见,办法存在.办法的地址是静态的与类绑定
变量和上面也相同.
15、静态办法,只能拜访类的静态成员和该办法的成员
16、JAVA不支撑多重承继,相似一个树,一个类只要一个父类,但能够有多个接口
C++支撑多重承继,相似一个网,一个类能够有多个父类
17、子类默许调用了父类无参结构函数.假如父类没有无参结构函数,有必要手动重写子类的结构办法,并用super(参数)调用父类中有参结构的办法. 海淘购物一定要选正规平台,海外购物平台欧莱名品http://www.eulike.com/拥有7年海淘购物服务经验、专业的购物团队,支持网站直接注册下单和淘宝下单,安全、方便、放心海淘!
例:
class People{
private int age;
public People(int age){
this.age=age;
}
}
class Doctor extends People{
//不写以下结构办规律犯错.
public Doctor(){
super(23);
}
//或许
public Doctor(int age){
super(age);
}
}
解决办法:在写类的有参结构办法时,最佳界说个无参的结构办法.
18、结构办法调用父类的结构办法super()前不能有别的的句子.
19、final能够润饰形式参数,避免被改
例:
void walk(final int length){
}
20、import导入包的了解,主要的工作总要放到前面
21、private与abstract抵触,缘由:子类完成(承继)不了接口(抽象类)中被private润饰的成员,但接口(抽象类)中的办法有必要要重写,加private就没办法重写了
例:
interface InterfaceTest {
int f();
private abstract int ff();//此句过错,要去掉private
}
22、内部类能够被外部运用,能够拜访外部类(宿主类)的privite成员;内部类成员加public也能够被外部拜访,但也风险,界说成private外部不能拜访此类了(常用).
public class OutClass {
private int i=2;
public class InnerClass{
public int j=i;
}
}
23、抽象类不必承继也能用
例:
abstract class Out2{
private int i=2;
public abstract int f();
public static Out2 getInstance(){
return new Inner2();
}
private static class Inner2 extends Out2{//static
public int f(){
return 2;
}
}
public static void main(String[] args) {
Out2 ou=Out2.getInstance();//抽象类不必承继也能用,取得此类的实例
int i=ou.f();
System.out.println(i);
}
}
24、接口里也能够界说类(内隐类)
例:
interface InterfaceTest {
int f();
class A{
int f(){
return 2;
}
}
}
25、内部类的运用.类NoNameInnerClass 不必implements完成接口,而用传递进来目标来用接口
interface Inter{
void paint();
}
public class NoNameInnerClass {
public void paint(Inter p){//传递进来目标来用接口
p.paint();
}
public void func(){
//为了取得目标,界说一个内部类,把此目标做参数
class Paint implements Inter{
public void paint(){
System.out.println("paint.");
}
}
Paint p=new Paint();
paint(p);
}
}
26、内部类的运用.不必类名,直接创立目标,无名内隐类,类名是他完成的接口姓名
interface Inter{
void paint();
}
public class NoNameInnerClass {
public void paint(Inter p){//传递进来目标来用接口
p.paint();
}
public void func(){
//直接创立目标,无名内隐类,类名是他完成的接口姓名,
paint(new Inter(){
public void paint(){
}
});
}
}
27、单态规划形式。能够创立类的仅有实例。把结构办法界说成private,再创立静态的成员办法getInstance()取得此类仅有实例.
例1.
public class ChineseTest{
public static void main(String[] args) {
Chinese Obj1 = Chinese.getInstance();
Chinese Obj2 = Chinese.getInstance();
System.out.println(Obj1 == Obj2);
}
}
class Chinese {
private static Chinese objRef = new Chinese();
private Chinese() {
}
public static Chinese getInstance(){
return objRef;
}
}
例2:
public class ChineseTest{
public static void main(String[] args) {
Chinese Obj1 = Chinese.getInstance();
Chinese Obj2 = Chinese.getInstance();
System.out.println(Obj1 == Obj2);
}
}
class Chinese {
private static Chinese objRef ;
private Chinese() {
}
}
28、泛型使用
Vector类后的E代表泛型,用来约束往里边放的数据类型
例:
Vectorv=new Vector();
v.add("aaa");
v.add("bbb");
System.out.println(v.get(0));
29、假如一个办法可能有反常,则用throw new Exception("")来抛出反常
假如办法内用throw抛出反常,则此办法头后有必要用throws(多个s)声明可能会抛出反常。
假如一个办法头后用throws声明可能会抛出反常,则此办法在用的时分有必要用try-catch句子
例:
public class Lx_Yichang {
static int div(int x,int y)throws Exception{
if(y==0){
throw new Exception("除数不能为0!!!");//办法内用throw抛出反常
}else{
return x/y;
}
}
public static void main(String[] args) {
try{//用try-catch句子
int z=0;
z=Lx_Yichang.div(10, 0);
System.out.println(z);
}
catch(Exception ex){
System.out.println(ex.toString());
ex.printStackTrace();
}
finally{
System.out.println("End!");
}
}
}
30、Hashtable类使用,能够经过get(键)或get(hashCode)来取得值内容。
import java.util.Hashtable;
class PhoneList{
String name;
String phoneNumber;
public PhoneList(String name,String phoneNumber){
this.name=name;
this.phoneNumber=phoneNumber;
}
}
public class HashtableTest {
public static void main(String[] args) {
//使用泛型
Hashtable hashTable=new Hashtable();
hashTable.put("wang0",new PhoneList("wang","0000000"));
hashTable.put("wang1",new PhoneList("wang","1111111"));
hashTable.put("wang2",new PhoneList("wang","2222222"));
hashTable.put("wang3",new PhoneList("wang","3333333"));
System.out.println(hashTable.get("wang2").phoneNumber);
//不使用泛型
Hashtable hash=new Hashtable();
hash.put("wang0",new PhoneList("wang","0000000"));
hash.put("wang1",new PhoneList("wang","1111111"));
hash.put("wang2",new PhoneList("wang","2222222"));
hash.put("wang3",new PhoneList("wang","3333333"));
//System.out.println(((PhoneList)hash.get("wang2")).phoneNumber);//不必泛型,需求强行类型变换
//强行类型变换时,最佳先进行类型判别
Object o=hash.get("wang2");
if(o instanceof PhoneList){
System.out.println(((PhoneList)o).phoneNumber);
}
//使用hashcode
Hashtable table=new Hashtable();
PhoneList p1=new PhoneList("wang2","888888888888");
table.put(new Integer(p1.hashCode()), p1);
System.out.println(table.get(new Integer(p1.hashCode())).phoneNumber);
}
}
31、供给一个对于**的简略描绘,页面,**称号,供给商,金钱初始值等等。这些数据能够置于.jad文件中。 打包后是放在JAR的META-INF文件夹里。 用MIDlet类的getAppProperty(String key)来取得其间的值.
32、Canvas 的hideNotify() 里写暂停的代码。showNotify() 写持续**的代码。
来电话时主动调用hideNotify() 。 pauseApp也能够完成,但有的手机不支撑如Nokia手机
34、运转提示ALERT: java/lang/ClassFormatError: Bad version information.缘由
缘由:当时编译器的版别过高。
解决办法: 编译器的版别不要过高不然有的手机不认,挑选编译器办法:点项目右键特点->Java Compiler-> Enable project specific settings打勾,然后挑选版别较低的编译器
35、把一切的引证都设置为null才能够变为废物
Hero h=new Hero();
Hero h2=h;
h=null;//此刻,h并没变为废物,由于还有h2指向它,需求把h2也设置为null,h才变为废物
h2=null;
36、去掉无用包(ctrl+shift+0).或右键->Source->Organize Imports
37、WTK2.5的装置后,ECLIPSE的设置
Window->Preferences->Device Management->Import->找到WTK的装置途径
38、增加资本文件夹名
在项目上右键->Properties->双击Java Build Path->点Add Foler->鄙人面的选项中挑选update exclusion filters in other source folders to solve nesting,再添入资本文件夹名,如src、res等。
39、增加抽象类、接口中的办法。
例如对承继Canvas类,需求增加protected void keyPressed(int keyCode){}办法时.
在代码上右键->Source->挑选Override/Implements Methods->在窗口中,对要重写的办法打勾->Ok。
40、在for句子中,第2个循环条件能够和逻辑表达试取与
例:
for(int i=0; i<100 && i%2==0;i++)
41、DataInputStream包装FileInputStream后,底层操作文件,上层按指定格局输出(最易运用)
42、FileInputStream的使用
例:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class PekingFileInputStreamTest1 {
public static void main(String[] args) {
try {
//在项目根目录里创立文件fileInputStream.txt
File file=new File("fileInputStream.txt");
FileOutputStream fout=new FileOutputStream(file);
fout.write(65);
fout.close();//输出到文件结束后封闭
//开端读
FileInputStream fin=new FileInputStream("fileInputStream.txt");
int b=fin.read();
System.out.println(b);
fin.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
43、使用DataOutputStream包装FileInputStream按指定格局输出
例:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileInputStream;
public class PekingFileInputStreamTest2 {
public static void main(String[] args) {
try {
//在项目根目录里创立文件fileInputStream.txt
File file=new File("fileInputStream.txt");
FileOutputStream fout=new FileOutputStream(file);
//包装下按指定格局输出
DataOutputStream dout=new DataOutputStream(fout);//子类fout做参数传给父类,子类当父类用
dout.writeInt(8793);
dout.writeUTF("感动我国");
dout.close();
fout.close();
//开端读
FileInputStream fin=new FileInputStream("fileInputStream.txt");
DataInputStream din=new DataInputStream(fin);
int b=din.readInt();
String s=din.readUTF();
System.out.println(b);
System.out.println(s);
din.close();
fin.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
44、使用PrintWriter包装三次的比如。
PrintWriter包装OutputStreamWriter,OutputStreamWriter包装FileOutputStream,FileOutputStream包装File
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
public class PekingFileInputStreamTest3 {
public static void main(String[] args) {
try {
//在项目根目录里创立文件fileInputStream.txt
File file=new File("fileInputStream.txt");
// FileOutputStream fout=new FileOutputStream(file);
// OutputStreamWriter osw=new OutputStreamWriter(fout);//测验字符流//字符流通向字节省的桥梁
// PrintWriter pw=new PrintWriter(osw);//包装三次
PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(file)));
//开端读
pw.println("窗前名月光,");
pw.println("疑是地上霜.");
pw.println("昂首望明月,");
pw.println("垂头思故土。");
pw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}[/font] |
|