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中的注释
答:单行注释//......
多行注释/*.......*/
文档注释/** ........<p>( 换行标签)*/, 用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;i<n;i++){} ----确定循环
while(){} ----循环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;