Java知识

补充内容

2019-07-28  本文已影响0人  不小心丢了

JDK目录介绍

bin目录:该目录用于存放一些可执行程序,如javac.exe(Java编译器)、Java.exe(Java运行工具)、jar.exe(打包工具)和Javadoc.exe(文档生成工具)等。

db目录:db目录是一个小型的数据库。从JDK6.0开始,Java中引入了一个新成员JavaDB,这是一个纯Java实现、开源的数据库管理系统。这个数据库不仅很轻便,而且支持JDBC4.0的所有规范。在学习JDBC时不再需要额外地安装一个数据库软件,选择直接使用JavaDB即可。

jar目录:“jar”是Java  Runtime  Environment的缩写,意为Java程序运行时的环境。此目录是Java运行时环境的根目录,它包含Java虚拟机、运行时的类包、Java应用启动器以及一个bin目录,但不包含开发环境中的开发工具。

include目录:由于JDK是通过C和C++实现的,因此在启动时需要引入一些C语言的头文件,该目录就是用于存放这些头文件的。

lib目录:lib是library的缩写,意为Java类库或库文件,是开发工具使用的归档包文件。

src.zip文件:src.zip为src文件夹的压缩文件,src中放置的是JDK核心类的源代码,通过该文件可以查看Java基础类的源代码。

在JDK的bin目录下放着很多可执行程序,其中最重要的就是javac.exe和java.exe

javac.exe是Java编译器工具,它可以将编写好的Java文件编译成Java字节码文件(可执行的Java程序)。Java源文件的扩展名为.java,如“HelloWorld.java”。编译后生成对应的Java字节码文件,文件的扩展名为.class,如“HelloWorld.class”

java.exe是Java运行工具,它会启动一个Java虚拟机(JVM)进程,Java虚拟机相当于一个虚拟的操作系统,它专门负责运行由Java编译器生成的字节码文件(.class文件)。

十进制和二进制之间的转换

十进制转换成二进制

十进制转换成二进制就是一个除以2取余数的过程。要把转换的数除以二,得到商和余数,将商继续除以2,直到商为0.最后将所有余数取倒数排列,得到的数就是转换结果。

十进制转换成二进制

三次除以2计算得到余数依次是0,1,1,将所有余数倒序排列是110,。所以十进制的6转换成二进制,结果是110。

二进制转换成十进制

二进制转换成十进制要从右到左用二进制位上的每个数去乘以2的相应次方,例如,将最右边第一位的数乘以2的0次方,第二位的数乘以2的1次方,第n位的数乘以2的n-1次方,然后把所有相乘后的结果相加,得到的结果就是转换后的十进制。

如把一个二进制0111转换成十进制,转换方式如下:

1*2º+1*2¹+1*2²+0*2³=1+2+4+1=8



表达式类型自动提升

所谓表达式是指由变量和运算符组成的一个算式,变量在表达式中进行运算时,也有可能发生类型转换,这就是表达式数据类型的自动提升,如一个byte类型的变量在运算期间类型会自动提升为int类型。

public class Exampel02 {

    public static void main(String[]args) {

      byte b1=3;

      byte b2=1;

      byte b3=(b1+b2);   //此处在编译期间就会报错应改为  byte b3=(byte)(b1+b2); 

      System.out.println(b3);

    }

}

表达式b1+b2运算期间,变量b1和b2都被自动提升为int类型,表达式的运算结果也就成了int类型,这时如果将该结果赋给byte类型的变量就会报错,需要进行强制类型转换。将 byte b3=(b1+b2); 改为byte b3=(byte)(b1+b2);再次编译后程序不会报错。

三元运算

在Java中有一种特殊的运算叫做三元运算,它和if-else语句类似,语法如下。

判断条件?表达式1:表达式2

三元运算会得到一个结果,通常用于对某个变量进行赋值,当判断条件成立时,运算结果为表达式1的值,否则为表达式2的值。

例如求两个数x、y中的较大者,如果if…else语句来实现,具体代码如下。

int  x=0;

int  y=1;

int  max;

      if(x>y){

       max=x;

      }  else  {

       max=y

}

上面的代码运行之后,变量max的值为1,上述代码片段中if…else语句可以用下面的三元运算来替换。

int max=x>y?   x : y ;

访问控制

在Java中,针对类、成员方法和属性提供了四种访问级别,分别是

访问级别

private(类访问级别):如果类的成员被private访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问类的良好封装就是通过private来实现的

default(包访问级别):如果一个类或者一个类的成员不使用任何访问控制符修饰,则称它为默认访问控制级别,这个类或者类的成员只能被本包中的其它类访问

protected(子类访问级别):如果一个类的成员被protected访问控制符修饰,那么这个成员既能被同一包下的其它类访问,也能被不同包下该类的子类访问

public(公共访问级别):这是一个最宽松的访问控制级别,如果一个类或者类的成员被public访问修饰符修饰,那么这个类或者类的成员能被所有的类访问,不管访问类与被访问类是否在一个包中。

Eclipse快捷键

删除行:Ctrl+D

导包:Ctrl+Shift+O

保存:Ctrl+S

保存所有:Ctrl+Shift+S

格式化代码:ctrl+shift+f

自动注释//或取消注释当前行或者选择的多行:ctrl+/

自动注释/* */掉选择的代码块:ctrl+shift+/    用ctrl+shift+\可以取消注释。

上下上下行交换内容或把当前行内容上或下移动:Alt+方向键

重命名:Alt+Shift+R(必须先选中方法)

抽取方法: Alt+Shift+M

JDK5.0新特性——foreach循环

虽然Iterator可以用来遍历集合中的元素,但写法上比较繁琐,为了简化书写,从JDK5.0开始提供了foreach循环。foreach循环是一种更简洁的for循环,也称增强for循环。foreach循环用于遍历数组或集合中的元素,其具体语法格式如下

for(容器中元素类型  临时变量  :容器变量){
                    执行语句
}

与for循环相比,foreach循环不需要获得容器的长度,也不需要根据索引访问容器中的元素,但它会自动遍历容器中的每个元素

foreach循环在遍历集合时语法非常简洁,没有循环结构,也没有迭代语句,所有这些工作都交给虚拟机去执行了。foreach循环的次数是由容器中的个数决定的,每次循环时,foreach中都通过变量将当前循环的元素记住,从而将集合中的元素分别打印出来。

foreach循环并不能修改数组中的元素,其原因是foreach循环代码中的str="ddd"只是将临时变量str指向了一个新的字符串,这和数组中的元素没有一点关系。而在普通for循环中,是可以通过索引的方式来引用数组中的元素并将其进行修改的。

JDK5.0新特性——泛型

集合可以存储任何类型的对象,但是当把一个对象存入集合后,集合会“忘记”这个对象的类型,将该对象从集合取出时,这个对象的编译类型就变成了Object类型。换句话说,在程序中无法确定一个集合中的元素到底是什么类型的。那么在取出元素时,如果进行强制类型转化就很容易出错。

向List集合中存入了3个元素,分别是两个字符串和一个整数。在取出这些元素时,都将它们强转为String类型,由于Integer对象无法转换为String类型,因此在程序运行时会出现错误。为了解决这个问题,在Java中引入了“参数化类型(parameterizedtype)”这个概念,即泛型。它可以限定方法操作的数据类型,在定义集合时,使用“<参数化类型>”的方式指定该类中方法操作的数据类型,具体格式如下。

ArrayList <参数类型> list =new ArrayList<参数化类型>();

接下来对八行代码进行修改      创建集合对象并指定泛型为String

ArrayList<参数类型> list=newArrayList<String>();

修改后的代码限定了集合元素的数据类型,ArrayList<String>这样的集合只能存储String类型的元素,程序在编译时,编译器就可以检查出错误。

上一篇下一篇

猜你喜欢

热点阅读