从零开始学习java编程
http://www.cnblogs.com/geeit/p/3284002.html
public class HelloWorld
{
public static voidmain(String args[])
{
System.out.println("Hello World!"); //向控制台输出一条语句,同时必须以;结尾
}
}
运行程序:dos下:javac HelloWorld.java(使用javac 文件名.java进行编译)
java HelloWorld(java 类名 输出)
1. Java的注释分为三种:单行注释// 多行注释/*…*/ 文档注释(javadoc)。API文档通常说细说明了每个类、每个方法的功能及用法。Java语言的API文档的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2. java 组织形式:Java程序必须是以类class形式存在,类class是Java程序的最小程序单位。Java解释器规定:如需某个类能被解释器直接解释执行,则这个类必须包含main方法,而且main方法必须使用pulbic static void来修饰,且main方法的形参必须是字符串数组类型(String args[]是字符串数组的形式) 也就是说main方法基本上固定不变的
3. Java源文件的命名规则
1)Java程序源文件的后缀必须是.java,不能是其他文件后缀名
2)一个Java源文件可以包含多个类定义,但最多只能包含一个public类定义;如果Java源文件里包含public类定义,则该源文件的文件名必须与这个public类的类名相同
3)Java语言是严格区分大小写的语言。因此源文件的文件名保存的时候也应注意大小写
4)Java程序中的关键字全部是小写的
1. 面向过程的思维:吃(猪八戒,西瓜); 面向对象的思维:猪八戒.吃(西瓜);
2. 最常用的UML图包括用例图、类图、组件图、部署图、顺序图、活动图和状态机图等。
http://www.ibm.com/developerworks/cn/rational/r-uml/
3. 面向对象方法具有三个基本特征:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism),其中封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能;继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法;多态指是的子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征.
在Java语言使用class关键字定义类,定义类时可使用Field来描述该类对象的数据,可使用方法来描述该类对象的行为特征。Java语言使用extends关键字来表示继承关系。
Java使用new关键字来创建指定类的对象,每个类可以创建任意多个对象
标识符就是用于给程序中变量、类、方法命名的符号
Java一共包括48个关键字、2个保留字、3个直接量。
abstract | assert | boolean | break | byte | case |
catch | char | class | continue | default | do |
double | else | enum | extends | final | finally |
float | for | if | implements | import | int |
interface | instanceof | long | native | new | package |
private | protected | public | return | short | static |
strictfp | super | switch | synchronized | this | throw |
throws | transient | try | void | volatile | while |
2个保留关键字:gotot和const
3个直接变量:true、false、null
所有的变量必须先声明,后使用。
一个Java类型常量默认就是int类型。Long类型定义时,需加L或者l. Java语言的浮点类型默认是double类型, 定义float需要加f或者F.
Java中整数常量有4种表示方式:十进制、二进制、八进制和十六进制,其中八进制整数常量以0开头,十六进制的整数常量以0X或者0x开头,其中10-15以a-f(不区分大小写)来表示。二进制以0b或0B开头表示。
所有数字在计算机底层都是以二进制形式存在的,原码是直接将一个数值换算成二进制数。但计算机以补码的形式保存所有整数。补码的计算规则:正数的补码和原码完全相同,负数的补码是其反码加1;反码是对原码按位取反,只是最高位(符号位)保持不变。
对于float型数值,第1位是符号位,接下来8位表示指数,再接下来的23位表示尾数;对于double类型数值,第1位也是符号位,接下来的11位表示指数,再接下来的52位表示尾数。Java语言的浮点数有两种表示形式: 1)十进制数形式:浮点数必须包含一个小数点,否则会被当成int类型处理 2)科学计数形式:例如:5.12E2(即5.12*10^2). Java还提供了3个特殊的浮点数值:正无穷大,负无穷大和非数,用于表示溢出和出错. 正无穷大就是一个正数除以0,Double或Float的POSITIVE_INFINITY来表示;负无穷大通过Double或Float的NEGATIVE_INFINITY表示,非数通过Double或Float的NaN来表示。必须指出的是,所有的正无穷大数值都是相等的,所有的负无穷大数值都是相等的;而NaN不与任何数值相等,甚至和NaN都不相等。
字符型通常用于表示单个的字符,字符常量必须使用单引号(')括起来。字符型常量有3种表示形式:1)直接通过单个字符来指定字符型常量 2)通过转义字符来表示特殊字符型常量 3)直接使用Unicode值来表示字符型常量,格式是'\uXXX',其中XXX代表一个十六进制的整数。
Java语言中常用的转义字符见下表:
转义字符 | 说明 | Unicode表示方式 |
\b | 退格符 | \u0008 |
\n | 换行符 | \u000a |
\r | 回车符 | \u000d |
\t | 制表符 | \u0009 |
\" | 双引号 | \u0022 |
\' | 单引号 | \u0027 |
\\ | 反斜线 | \u005c |
字符型常量也可以采用十六进制编码方式来表示,范围是'\u0000'-'\uFFFF',一共可以表示65535个字符,其中前256个字符和ASCII码中字符完重合。
Java没有提供字符串的基本数据类型,而是通过String类来表示字符串,由于字符串由多个字符组成,因此字符串常量使用双引号括起来。
布尔型只有一个boolean类型,用于表示逻辑上的“真”或“假”。在Java语言中,boolean类型的数值只能是true或false,不能用0或者非0代表。其他基本数据类型的值也不能转换成boolean类型。
Java 7引入了一个新功能:程序员可以在数值中使用下划线,不管是整型数值,还是浮点型数据,都可以自由地使用下划线。
Java语言所提供的7种数据类型之间是可以相互转换,有两种类型转换方式:自动类型转换和强制类型转换。
一个Java类型常量默认就是int类型。Long类型定义时,需加L或者l. Java语言的浮点类型默认是double类型, 定义float需要加f或者F.
Java中整数常量有4种表示方式:十进制、二进制、八进制和十六进制,其中八进制整数常量以0开头,十六进制的整数常量以0X或者0x开头,其中10-15以a-f(不区分大小写)来表示。二进制以0b或0B开头表示。
所有数字在计算机底层都是以二进制形式存在的,原码是直接将一个数值换算成二进制数。但计算机以补码的形式保存所有整数。补码的计算规则:正数的补码和原码完全相同,负数的补码是其反码加1;反码是对原码按位取反,只是最高位(符号位)保持不变。
对于float型数值,第1位是符号位,接下来8位表示指数,再接下来的23位表示尾数;对于double类型数值,第1位也是符号位,接下来的11位表示指数,再接下来的52位表示尾数。Java语言的浮点数有两种表示形式: 1)十进制数形式:浮点数必须包含一个小数点,否则会被当成int类型处理 2)科学计数形式:例如:5.12E2(即5.12*10^2). Java还提供了3个特殊的浮点数值:正无穷大,负无穷大和非数,用于表示溢出和出错. 正无穷大就是一个正数除以0,Double或Float的POSITIVE_INFINITY来表示;负无穷大通过Double或Float的NEGATIVE_INFINITY表示,非数通过Double或Float的NaN来表示。必须指出的是,所有的正无穷大数值都是相等的,所有的负无穷大数值都是相等的;而NaN不与任何数值相等,甚至和NaN都不相等。
字符型通常用于表示单个的字符,字符常量必须使用单引号(')括起来。字符型常量有3种表示形式:1)直接通过单个字符来指定字符型常量 2)通过转义字符来表示特殊字符型常量 3)直接使用Unicode值来表示字符型常量,格式是'\uXXX',其中XXX代表一个十六进制的整数。
Java语言中常用的转义字符见下表:
转义字符 | 说明 | Unicode表示方式 |
\b | 退格符 | \u0008 |
\n | 换行符 | \u000a |
\r | 回车符 | \u000d |
\t | 制表符 | \u0009 |
\" | 双引号 | \u0022 |
\' | 单引号 | \u0027 |
\\ | 反斜线 | \u005c |
字符型常量也可以采用十六进制编码方式来表示,范围是'\u0000'-'\uFFFF',一共可以表示65535个字符,其中前256个字符和ASCII码中字符完重合。
Java没有提供字符串的基本数据类型,而是通过String类来表示字符串,由于字符串由多个字符组成,因此字符串常量使用双引号括起来。
布尔型只有一个boolean类型,用于表示逻辑上的“真”或“假”。在Java语言中,boolean类型的数值只能是true或false,不能用0或者非0代表。其他基本数据类型的值也不能转换成boolean类型。
Java 7引入了一个新功能:程序员可以在数值中使用下划线,不管是整型数值,还是浮点型数据,都可以自由地使用下划线。
Java语言所提供的7种数据类型之间是可以相互转换,有两种类型转换方式:自动类型转换和强制类型转换。
当上图的类型需要逆向左边转换的时候,则必须使用强制类型转换,强制类型转换的语法格式:
(类型名)Value
在通常情况下,字符串不能直接转换为基本类型,通过基本类型对应的包装类则可以实现把字符串转换成基本类型。Java为8种基本类型都提供了对应的包装类:boolean对应的Boolean、byte对应的Byte、short对应的Short类,int对应的Interger、long对应的Long、char对应的Character、float对应Float、double对应的Double类,8个包装类都提供了一个parseXxx(Stringstr)静态于将字符串转换为基本类型。(
int Val=Interger.parseInt( String s);)
基本类型转为字符串:String.valueOf(127)或 “ 127”;
static修饰的变量为静态变量。静态变量,默认初始值为0。静态变量上再加个final修饰,则为静态常量。静态语句块中定义的局部变量值的变化,不影响其他的值。
x++表示先运算,再自增,++x表示先自增再参与运算。
在try-catch-finally语句执行过程中,
1)如果try中没有异常抛出
执行到try块时,如果return后面跟的是个语句,把该语句运算完,暂时放下不return;
寻找并执行finally语句块,如果finally中有return语句,就执行并return,方法结束;如果没有return语句,就返回执行try中的return,方法结束
2)如果try中抛出异常
try块中抛出异常的这个语句后面的语句都不会执行,后面的return执行不到
catch块捕获后,执行catch块,到return语句时,运算完return后面的语句,暂时放下不return
寻找并执行finally语句块,遇到return语句,运算并return,方法结束;如果没有return语句,就返回执行catch的return,方法结束
字符串有两种情况,一种是字符串直接量,存储在常量池中,常量池也在堆内存中;一种是堆内存中的字符串对象,存储在堆内存中
1)用""创建的字符串位于常量池
2)用new String()构造方法创建的字符串位于堆内存中,运行期创建
3)用"+"连接的字符串直接量,在编译器就可以确定连接后的值,因此属于常量池
4)用"+"连接的是字符串和变量或者方法返回值,则要到运行期才能确定,属于堆内存对象
5)其他:
String s1=newString("ABC");String s2=new String("ABC");这两个语句创建了3个String对象
Eclipse中单步调试和断点设置:
第一步:
设置断点:在该行最前面边框双击 或快捷键:Ctrl+Shift+B
第二步:
Debug 运行启动
第三部:
运行到断点后:
使用快捷键F5,F6,F7单步执行。
F5:Step into/进入该行的函数内部
F6:Step over/一行一行执行
F7:Step return/退出当前的函数
Java中String转换 常用的方法有:
1.(String) 要转换的对象:
这是标准的类型转换,对象类型必须能转成String类型,最好用instanceof做个类型检查,容易出错。
2. object.toString():必须保证object不是null值,
3.String.valueOf(object): 当object为null 时,String.valueOf(object)的值是字符串”null”,而不是null!!!
引用就是给变量起了个别名,引用不占内存,所以在不另外开辟新的空间给变量;指针则要另外开辟空间存放变量的地址;枚举的特点就是顺位递增,0-n;结构体则是把它所包括的所有类型变量都存进去。
1.代码是存在程序区,压根不会与栈区相关
2.函数递归调用会压栈入栈
3.局部变量存在栈区
容器:Collection +Map
String 字符串常量
StringBuffer 字符串变量 线程安全
StringBuilder 字符串变量 非线程安全
Builder >Buffer>String, 第一个比第二个要快,两者的方法基本相同,优先选择第一个。Buffer 主要操作有append 和insert方法。String是不可变的对象,每次改变相当于一个新的String对象;而StringBuffer每次的操作都是对象本身。处理速度两者有时基本差不多。