Java开发前环境配置:
1."www.oracle.com"下载jdk。java for developer目录下下载。
2.安装jdk。
3.安装好后配置环境变量。计算机属性->高级系统设置->环境变量->系统变量->首先新建名称为JAVA_HOME,值为javac的目录的\bin前的目录:D:\Program Files\Java\jdk1.7.0_45->然后编辑Path的值:光标移动到最前端写:%JAVA_HOME%\bin;(一劳永逸配置法)。
4.也可临时配置环境变量:cmd命令行输入set,可查看已配置好的环境变量。只查看path的值,在命令行输入set path。想配置path的值,可在命令行输入set path=D:\Program Files\Java\jdk1.7.0_45\bin;%path%打回车,并且此配置只在本窗口有效,打开新窗口查看path的值还是以前的path值。如果你是通过在本窗口命令行输入start命令打开新窗口的,该窗口会延习原窗口的环境变量值。
5.用txt文本编辑器写java代码时需要将.txt改成.java。新建个TXT文档,在里面输入你所需要的内容之后,再 文件 另存为 选择所有文件 输入你要保存的文件名 扩展名当然不要忘掉 是JAVA的。
你也可以直接打开我的电脑——工具——文件夹选项——查看——在高级设置中把 隐藏已知文件的扩展名 这一行前面的勾去掉,再在TXT文档后面直接改成JAVA的即可。
6.在命令行运行你刚才写的程序。打开命令行---cd进入到你刚才放.java源文件的文件夹---javac 123.java回车生成Demo.class执行文件---java Demo回车运行Demo。可以将原文件名保存成与类名一致,这样比较方便。
如果在class关键字前加上public关键字,就必须使类名与文件名一致。所以一个.java文件中只能存在一个public类。
7.配置java命令classpath。命令行输入set classpath=E:\java1201\day01(.class文件存放地址)。“.exe”(配置path)先当前目录找再在path里面找,“.class”(配置classpath)如果值后面加分号先从classpath里面找再在当前目录找,如果不加分号只在classpath里面找,正常最后不加分号,只在分隔的时候用分号。
8.大小写严重区分,class只能是小写的才是关键字。
9.类名通常由单个单词所组成,首字母大写。如果由多个单词所组成,每个单词的首字母大写。
10.
class Demo
{
public static void main(String[] args)
{
System.out.println("hello java");
}
}
主函数的作用,能保证这个类的独立运行。java这个命令会去调用虚拟机,虚拟机回去调用windows底层内容,并去运行你所指定的类,这个类Demo会先在这个类里面找有没有这个主函数。这个主函数就是程序的入口。
11.主函数的特点:在一个.java文件中是可以写多个类的。在命令行输入javac编译这个.java文件,会生成多个.class文件。只有有主函数的类才可以运行。一个类里不可有两个主函数。
------------------------------------------------------------------------------------------------------------------
注释与基本数据类型:
1.多行注释不允许再嵌套多行注释。/*..........*/,文本注释也一样。/**.........*/。
2.一般来讲,类上面加的都是文档注释/**......*/。函数的上面通常加的都是多行文本注释/**......*/。如果修饰符有改变的话,有可能会加多行注释。代码当中有几句话比较难懂,一般加单行注释,但是不要每句话都加。中英文结合非常密,会导致阅读性很差。
3.写代码之前首先写注释。
/*
需求:
思路:
1.
2.
步骤:
1.
2.
*/
4.由8位二进制数组成一个字节。字节是计算机的基本存储单位。
5.负数二进制:一个整数占4个字节,这个整数的二进制(4字节,前面补零凑够4字节)按位取反再加一。
6.负数的最高位都是一。
7.整数类型:byte(1字节:-2^7<x<2^7-1),short(2字节),int(4字节),long(8字节);
8.浮点型:float(单精度:4个8位),double(默认双精度:8个8位)
9.字符型:char(取值:0-65535)(char类型是两个字节)(一个中文占两个字节)
10.布尔型:boolean。boolean bo = true;boolean bo1 = false;
11.定义float t=2.3;会报错:错误,可能损失精度。
12.可以定义char ch=‘ ’;因为空格也是字符。
13.同一区间内不可以定义两个相同名字的变量名。大括号就是区间。
14.类型强制转换。byte b = 3;b = (byte)(b + 2);
15.System.out.println('a' + 1); 输出98。
16.字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
17.float>long ?????????????????
float 1个符号位,8个指数位,23个小数点后的位(尾数位)。
---------------------------------------------------------------------------------------------------------------------
1.类前面加了public以后,类名必须与.java文件名保持一致。
所以一个.java文件中只能存在一个public类。
2.构造函数的第一行都隐含着super();语句。
3.外部类和内部类前分别可以被哪些修饰符所修饰。
public/ abstract/ class Outer //外部类
{
private/ static/ class Inner //内部类
{
}
}
4.多态:
(1)多态的体现:
父类的引用指向了自己子类的对象。
父类的引用也可以接受自己子类的对象。
(2)多态的前提:
必须是类与类之间有关系,要么继承,要么实现。
必须存在覆盖。
(3)多态的好处:
提高了程序的扩展性。
(4)多态的弊端:
提高了扩展性,但是只能使用父类的引用访问父类中的成员。
(5)多态的应用:
Animal a = new Cat();a.eat();--猫吃鱼;
Cat c = (Cat)a;c.catchMouse();
5.只能将子类的对象附给父类引用,这是类型提升,向上转型。 父类的引用强制转换为子类类型,向下转型。
6.千万不要将父类对象转成子类类型。我们能转换的是父类引用指向了自己的子类对象时,该引用可以被强制转换为子类类型。多态自始至终都是子类对象在做着变化。
7.英语(class cast exception 类转换异常)、 if(a instanceof Cat) 如果a是Cat的实例。
- 构造代码块优先于构造函数执行
- 构造代码块给所有对象进行初始化
- 构造函数是给对应的对象进行针对性的初始化
8.Person p = new Person(); p.setName("lisi");
加载顺序如下:
1.因为new用到了Person.class。所以先找到Person.class文件并从硬盘中通过java虚拟机jvm加载到内存中。Person类中的static成员变量,和所有的成员方法,包括static方法,都放在方法区。
2.执行该类的static代码块,给Person.class类进行初始化。类一加载只执行一次。再创建对象的时候就不加载了。主函数那个类里的静态代码块优先于主函数执行。被static关键字修饰的代码块,与先后顺序有关。
3.在堆内存中开辟空间,分配内存地址。
4.在堆内存中建立对象的特有属性,并进行默认初始化。
(null,0, false, ...)
5.对属性进行显式初始化。(类里面,成员数据自己的初始化值)
6.对对象进行构造代码块初始化。
7.对对象进行与之对应的构造函数初始化。
8.将内存地址赋给栈内存中的p变量。
9.p.setName("lisi");非静态方法在栈区开辟setName();的空间,加载this,name(局部变量);谁调用的setName,this就是谁。运行完出栈释放。
9.static:非静态方法可以访问静态成员变量。
调用静态成员函数的时候,用类名.调用。静态成员函数里只有静态成员变量,都在方法区(静态区)。
如果一个类中一个static成员函数调用另外一个static成员函数,前面省略的是“类名.”,因为static函数里不能使用this关键字。
10.final最终的(类不能被继承,方法不能被重写,变量叫做常量)
11.super(和this的用法一样,当子类和父类有同名数据时,用super.来调用父类的数据,如果子类要调用父类构造函数时用super();语句)
12.extends (继承),
13.类前现在只能写两个修饰符 public和final。
14.abstract(抽象:只能修饰类与方法)
1.抽象方法必须放在抽象类中。
2.抽象方法和抽象类必须用abstract关键字所修饰。
3.抽象类不可以用new创建对象,因为调用抽象方法没意义。
4.抽象类中的方法要被使用,必须由子类复写其所有的功能后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类.
5.抽象可以强迫子类去复写。
6.抽象类里也可以有一般有主体的方法。
7.抽象类里可以不定义抽象方法,就是为了不让该类建立对象。
8.abstract只能修饰类与方法。
15.interface(class用来定义类;interface用来定义接口)
1.如果一个抽象类里所有方法都是抽象的,那么该类可以通过接口的形式来表示。
2.接口里的方法都抽象。
格式特点:
1.接口中常见定义:常量,抽象方法。
2.接口中的成员都有固定修饰符。
常量:public static final
方法:public abstract
3.接口中的成员都是public的
4.子类用implements关键字实现(继承),比extends累,子类需要把所有抽象方法都实现后才能实例化。子类实现的时候,实现的方法前必须加public关键字,因为要和父类有同样的权限才能覆盖。
5.接口可以被类多implements实现。也就是说一个类可以同时实现多个接口。也是对多继承不支持的转换形式,java支持多实现。
6.不支持多继承的原因是几个父类里有重复的方法,子类调用的时候会产生问题。
7.支持多实现是因为接口里的方法都没有主体,子类只要覆盖一次就都覆盖。
8.一个类在继承一个类的同时还能实现多个接口。
9.java只有在接口与接口之间才存在多继承。类与类之间只存在单继承。
10..接口与接口之间是继承extends关系。
16.d:
dir
md 创建文件夹
rd 删除文件夹
cd
cd.. 返回上一级
cd\ 回到根目录
del *.class 删掉所有class文件
exit 退出dos命令
cls 清屏
ctrl+Z 回退
17.最简单两种无限循环表达式
for(;;){}
while(true){}
for(表达式1;条件表达式;表达式2) { } 中:条件表达式必须为真或假;非真非假编译不通过;如果不写,默认为真。
for里面的用作增量的变量,出大括号则释放。
18. 高级:for(数据类型 变量:集合/数组) { }
19.异常:是对问题的描述。将问题进行对象的封装。
------------
20.异常体系:
Throwable
|--Error
|--Exception
|--RuntimeException
21.异常体系的特点:异常体系中的素有类以及建立的对象都具备可抛性。
也就是说可以被throw和throws关键字所操作。
只有异常体系具备这个特点。
--------------
22.throw和throws的用法:
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。
23.当函数内有throw抛出异常对象,并未进行try处理。必须要在函数上声明,否则编译失败。
注意,RuntimeException除外。也就是说,函数内如果抛出的是RuntimeException异常,函数上可以不用声明。
24.如果函数声明了异常,调用者需要进行处理。处理方式可throws可try。
注意:一般函数上不会抛RuntimeException,如果它在函数上抛出一个RuntimeException,这就是告诉你,这个异常是可以处理的。你可不处理,也可以处理。
---------------
25.异常有两种:
(1)编译时被检测异常:
该异常在编译时,如果没有处理(没有抛也没用try),编译失败。
该异常被标识,代表这可以被处理。
(2)运行时异常(编译时不检测)
在编译时,不需要处理,编译器不检查。
该异常发生,建议不处理,让程序停止,因为需要对代码修正。
---------------
26.异常处理语句:
try
{
需要被检测的代码
}
catch(异常的引用)
{
处理异常的代码
}
finally
{
一定会执行的代码
}
27.有三种结合格式:
1. try
{
}
catch()
{
}
2. try
{
}
finally
{
}
3. try
{
}
catch()
{
}
finally
{
}
注意:
1.finally中定义的通常是 关闭资源代码。因为资源必须释放。
2.finally只有一种情况不会被执行,当执行到System.exit(0);finally不会执行。
28.finally有一种情况是读不到的。
try
{
}
catch()
{
System.exit(0);//系统,退出。jvm结束。
}
finally
{
}
---------------------
29.自定义异常:
定义类,继承Exception或者RuntimeException。
1.为了让该自定义类具备可抛性
2.让该类具备操作异常的共性方法。
30.当要定义自定义异常的信息时,可以使用父类已经定义好的功能。
将异常信息传递给父类的构造函数。
class MyException extends Exception
{
MyException(String message)
{
super(message);
}
}
自定义异常:按照Java的面向对象思想,将程序中出现的特有问题进行封装。
----------------------
31.异常的好处:
1.将问题进行封装。
2.将正常流程代码和问题处理代码相分离,方便于阅读。
32.异常的处理原则:
1.处理方式有两种:try 或者 throws。
2.调用到抛出异常的功能时,抛出几个,就处理几个。
一个try对应多个catch。
3.多个catch,父类的catch放到最下面。
4.catch内,需要定义针对性的处理方式。不要简单的定义printStackTrace,
输出语句。也不要不写。
5.当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。
try {
throw new AException();
}
----------------------------------------------------------------------------------------------------------------
33.当equals和"=="都比较对象的时候,可以简单这样理解:equals和==都是比较对象,但equals就是比较对象的内容,而==还会比较对象的地址。
简介:equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写。
Java的静态代码块、构造代码块、局部代码块
静态代码块
class Demo
{
static //静态代码块
{
}
}
随着类的加载而执行。而且只执行一次(这跟类的生命周期较长有关)。
作用:给类进行初始化。
构造代码块
class Demo
{
{//构造代码块
}
}
类中独立代码块。
作用:给所有对象进行初始化。
(构造函数是给对应的对象进行针对性的初始化。)
局部代码块
class Demo
{
public void demo()
{
{ //局部代码块
}
}
}
方法中的空白代码块。
作用:限制局部变量的生命周期。
------------------------------------------------------------------------------------------------------------------
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net