第01章 CORE Java_基本格式

1.题:java历史?
答:Java 之父Golsling
1995 年5 月23 日 Java 诞生  
1998 年12 月 1.2 版本Java2  J2SE J2EE J2ME  
2004 年12 月 1.5 版本(5.0) Java JavaSE JavaEE JavaME
2.题:JavaSE,JavaEE,JavaME?
答:JavaSE ---Java 标准平台 
JavaEE ---企业级平台 
JavaME ---微小平台,用在资源受限的平台上
3.题:Java语言特点?
答:(1)跨平台---一次编译,到处运行 
(2) 简单---简化C++ , 取消了指针,对指针进行了上层的封装,它保证能够通过这 
个指针(引用), 来访问有效的内存单元。 
不允许多继承,使继承关系成树装图,每个类都只能由一个 
父类。java 语言的开发效率高,但执行效率低。( 相当于c++ 的55%)  
(3)纯面向对象的语言---都要放在类中 
(4)垃圾回收机制---自动垃圾收集,永远不会出现内存泄露的问题
4.题:JVM(虚拟机)?
答:java 语言是先编译后解释,java 源码是通过编译生成一种特殊的.class 的中间字节码文件, 
然后再由JVM 进行解释运行。 
(编译)(解释) 
.java ----> .class ---> 可执行文件 
5.题:java 源代码中的main 方法的定义和写法?
答:main 方法是程序的入口。 
public class Hello{  // 一个源文件中只能有一个公开类,而且源文件的文件名与公 
开类的类名完全一致  
public static void main(String[] args){ // 程序入口 public static 可以调换顺序 
  System.out.println("Hello world");  // 打印语句 
 }    
}
编译命令 javac xxxx.java 源文件的名字,源文件中的一个类会对应编译生成一个.class  
文件  
运行命令 java xxxx 类的名字---启动虚拟机 
6.题:环境变量?
答:JAVA_HOME =/opt/jdk1.5.06  JDK 安装路径---JDK= JRE {JVM( 硬件)+ 编译器(软 
件)} + 编译器工具+类库 
PATH =$Path:$Java_Home/bin:.  
ClassPath = . 类路径 
7.题:包?
答:分类放置,减少命名空间 
包名.类名表示一个类的全限定名 
java xxx.xxx.ClassA ---运行时要在包结构的上一层目录来运行。 
javac -d . xxxx.java ---编译的时候,按照包结构存放字节码文件,此命令生成的.class  
文件在当前目录 
package xxx.xxx ,包的定义在一个程序中只能由一个 
import xxx.xxx.xxx.ClassA; ---在程序中声明ClassA 类,使用的时候不需加包名,使用同 
一包内的类时,不用引入import p1.p2.p3.p4.p5.*; ---声明p5包中所有的类,不能代表其子包 
系统会在每个java 程序中隐含导入了java.lang 这个包
8.题:java中的注释  
答:单行注释//......  
多行注释/*.......*/  
文档注释/** ........

( 换行标签)*/, 用javadoc 命令可以根据原码中的文档注释生成注释 
文档(html 格式)。文档注释中可以使用html 标签。 
javadoc -d 路径(指定注释文档的保存路径)xxx.java  
文档注释一般写在类定义之前,方法之前,属性之前。 
在文档注释中可以用@author 表示程序的作者,@version 表示程序的版本,前两个注 
释符号要写在类定义之前,用于方法的注释@param 对参数进行注释,@return 对返回值进行 
注释@throws 对抛出异常的注释。 
9.题:标识符规则:类,方法,变量,同时也是包名的规范 
答:由字母(汉语中的一个汉字是一个字母), 数字,下划线和货币符号组成,不能以数字 
开头。 
大小写敏感 
没有长度限制,不能有空格 
不能使用Java 的关键字和保留字 
java 中的关键字 
goto 和const 在java 中虽然不再使用但是还作为保留字存在 
java 中没有sizeof 这个关键字了,java 中的boolean 类型的值只能用true 和false ,且这 
两个也是关键字  
enum 枚举 assert 断言 
一个标识符尽量符合语义信息,提高程序可读性 
类 名:每个单词首字母大写, 
变量和方法:第一个单词小写,后边的每个单词首字母大写 
包 名:全部小写 
常 量:全部大写 
10.题:局部变量
答:(1)先赋值后使用 
(2)从定义变量的代码块开始到代码块结束 
(3)在同一范围内不允许两个局部变量发生命名冲突 
11.题:Java 的数据类型? 
答:(1)简单类型 --- 8种有符号的数据类型 
a) 整型     
byte  1 字节 8 位 -128 到127   
short  2 字节 16 位 -2^15 到2^15-1  -32768 到32767  
int  4字节 32 位 -2^31 到2^31-1  -2147483648 到2147483647  
整型值存放,正数存放原码(二进制码), 负数则存放补码(原码按位取反末位加一)。 
long  8字节 64位 -2^63 到2^63-1  long a  =  40000l;  // 在数字的结 
尾加“l” ,表示long 类型的字面值    
b) 浮点类型    
float  4字节 32 位float a =  1.3f;   
double  8 字节 64 位 double a  =  1.3;   
double 和long 比较,double 表示的数值要大,因为有科学计数法  
float a  = 1.3;  //error 会造成精度丢失,强转float a  =  (float)1.3;

或者float a =  1.3f;  
c) 字符类型  
char  2 字节 16 位  
d) 布尔型  
boolean  false/true  //Java 中false 与0不能转换  
自动类型提升:  
a 运算符b   
a 和b 中有一个是double ,  结果就是double  
a 和b 中有一个是float ,  结果就是float  
a 和b 中有一个是long ,  结果就是long  
除以上之外的情况,结果都是int  
char 是无符号的16 位整数,字面值必须用单引号括起来;‘a’  
String 是类,一个String 的字符串是一个对象,非原始数据类型; 
在字符串中使用"+" ,表示字符串的连接,系统重载了这个运算符 
char 类型也可以用通用转译字符,但是不能用ASCII 码。可以用“/u0000”( 十六进制)  
这种格式,因为char 型中使用的是unicode 编码方式。 
char c1 =  'a';  
char c2 =  97;  
char c3='/u0061'; // 一个字节用2 个十六进制的数字表示 
整数除0有异常,double 除0 没有异常 
(2)对象类型 
12.题:Java中的运算符?
答:java 的运算符的优先级和结合性和c++ 相同) 
13.题:流程控制?
答:(1)控制流 
if()  
if()….else  
if()…..else if()….else  
注意:else 只是和其上面的同层的最近的if() 来配对。 
(2)switch(s){  
case 'a':……..  
 case 1:……break;  
 default:  
 …………  
}   
注意:switch() 内数据类型为byte short char int 类型,只有以上四种类型的才可以在 
switch() 中使用。 
case 块中不加break 时顺序执行下面的语句。 
4、循环语句 
for(inti=0;iwhile(){} ----循环0 或多次 
do{} while();-----------注意加分号循环1 或多次 
5、语法 
在main 方法中要使用全局变量或调用其他方法时,要求全局变量和方法要有static 修饰 
命令行参数java Class ab  
args[0] =a  
args[0] =b  
字符串转成int 类型int i= Integer.parseInt(a);  
6、数组 
内存中的连续空间 
数组是一次性定义多个相同类型的变量 
Java 中一个数组就是一个对象,有属性,没有方法 
int[] a; // 定义一个数组,变量名就是指向数组首地址的指针 
a=new int[10];// 为数组分配空间 
a.length; // 得到数组的长度 
数组创建后有初始值:数字类型为0 布尔类型为false 引用类型为null???  
String[] 默认值null  
初始化、创建、和声明在同一时间 
int[] i={0,1}; // 显示初始化 
int[] i= new int[]{0,1}; // 注意:这样显示的初始化的时候,new int[] 中括号中必须 
是空的,不能填数字 
Car[] c ={new Car(),new Car()};  
数组拷贝 
System.arrayCopy(Object src, int srcPos, Objectdest, int destPos, int length);  
src 源数组,srcPos 从第几位开始拷贝(数组下标, 从0 开始),dest 目标数组,destPos  
目标数组放置的起始位置,length ,表示要拷贝的长度。拷贝一个数组到另一个数组。 
多维数组 
1) 有效定义 
int[][] i1 = new int[2][3]; (同时给定一维,二维的空间) 
int[][] i2 = new int[2][]; (给定一维的空间,二维空间待定,不规则的二维数组) 
i2[0] =new int[2],i2[1] = new int[3];  
* C++ 中int[][] =newint[][3]; 有效 
2) 无效定义 
int[][] i1  =  new int[][3];//行必须要有  
3) 数组长度 ------------数组的属性length (在二维数组中这个属性只代表第一维的长度)  

 
int[] i = new int[5];  
int len  = i.length;  //len  = 5;  
Student[][] st  =  new Student[4][6];  
len  = st.length;  //len  =  4;  
len  = st[0].length;  //len  =  6;

 

你可能感兴趣的:(第01章 CORE Java_基本格式)