之前自己归纳的一些Java基础知识点,分享一下,顺便自己回顾复习一下。
Java基础 JDK安装和配置 1、环境变量JAVA_HOME(操作系统中用来指定操作系统运行环境的变量)变量值:C:\Program Files\Java\jdk1.7.0_04(安装jdk的目录) 2、变量classpath(操作系统在哪些目录下可以找到您所要执行的Java程序所需要的类或者包)变量值: %JAVA_HOME%\lib; 3、jdk目录组成:
lib:java类库文件。 bin:JDK中一些用于java开发的一些可执行文件。 include:c语言的头文件,用于支持java原生接口和java虚拟机调试接口的一些原生代码程序。 jre:存放Java运行时环境的根文目录,这个运行时环境是java包的一个实现。 db:纯Java开发的数据,是一个开源的Java开发的关系数据库。 命令行工具(JDK提供的) 1、 javac – 编译器,将源代码程序编译成为字节码文件。 2、 jar – 打包工具,将相关的字节码文件打包成一个jar文件。 3、 javadoc – 文档生成器,从源代码注释中提取信息,并生成文档,以便于查看。
“javadoc -d” 指定输出文档的存放的目录 "javadoc ."表示当前的目录 "javadoc -version"用来指定输出文档中需包含版本信息 "javadoc -author"用来指定输出文档中需包含作者信息 4、 jdb – debugger,调试工具。 5、 java – 运行编译后的java程序。 6、 appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 7、 javah:是java语言 C 头文件和存根文件生成器。 8、 javap:Java反编译工具,显示编译类文件中的可访问功能和数据,可用于分析代码。 9、 jconsole:进行系统调试和监控的工具。
Java八种基本数据类型 1、byte 8位(1字节) 2、short 16位(2字节) 3、int 32位(4字节) 4、long 64位(8字节) 5、float 32位(4字节) 6、double 64位(8字节) 7、char 16位(2字节) 8、boolean 1位
用于高精度计算的非基本数据类型的数字类 1、BigInteger——任意大的整数,可用于密码学计算等。
BigInteger a = new BigInteger(“1”) 相当于 BigInteger a = BigInteger.ONE; 2、BigDecimal——任意精度的定点实数,可用于精确的货币计算等。
BigDecimal c = 数字1.divide(数字2,20,BigDecimal.ROUND_UP); 3、NumberFormat
变量命名规范 1、标识符可从一个字母、下划线(_)或美元符号($)开始,随后也可跟数字。标识符是大小写区别对待的并且未规定最大长度。
数组 数组:保存多个相同类型的变量的顺序集合,这些变量在数组中以列表的形式存在。
数组排序:选择排序 数组查找:1、二分法 2、线性查找 数组复制:1、循环复制 2、System.arraycopy 3、clone方法 可变长参数列表:只能有一个且只能是最后一个参数,返回类型不能是可变参数。 数组被看作是对象,因为数组是用new操作符创建的,数组变量实际上是一个包含数组引用的变量。 访问修饰符 1、public(该类或非该类均可访问) 2、protected(该类及其子类的成员可以访问,同一个包中的类也可访问) 3、默认(相同数据包中的类可以访问) 4、private(只有该类可以访问)
abstract抽象类 1、抽象类不能被实例化 2、构造方法和static方法不能是抽象的 3、父类的抽象方法往往在子类中实现 4、抽象类可以具有指向子类对象的对象引用 5、抽象类和接口区别
接口只能有抽象方法,抽象类可以有非抽象方法。 接口的instanceof的使用 接口不可以定义静态方法,抽象可以。 接口里面不可以有构造函数和初始化块 5.类可以实现多个接口,但是只能继承一个抽象 StringBuffer和StringBuilder的区别 1、StringBuffer线程同步,安全,效率较低 2、StringBuilder不同步,效率高,但是多线程使用时可能会有问题。 3、构建器的容量(不增加时候的长度 capacity())和长度(实际) 4、setLength();会截取 trimToSize();缩小到实际长度
重载和重写 1、重载:参数类型,个数,顺序至少有一个不相同,方法名必须相同,存在于同类中。 2、重写:方法名,参数,返回值相同,子类不能缩小访问权限,存在于父类和子类,fina修饰方法不能重写
ArrayList和LinkList的区别 1、ArrayList(ArrayList 增长当前长度的50%,多线程情况不使用)
优点:1.节省空间 2.访问快 缺点:1.进行插入删除操作的效率低 2.需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出 2、LinkList
优点:1.插入,删除操作快 2.不需要预先分布连续的存储空间 缺点:1.要占用额外的存储空间存储元素之间的关系,存储密度降低。2.链表不是一种随机存储结构,不能随机存取元素。 Set和List区别 1、Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
Map四种遍历方式: 1、通过key值,使用for (String key : map.keySet()) 2、如代码段:
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
3、如代码段:
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet())
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
4、如代码段:
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v); }
}
内部类:(内部类和外部类不存在继承) 1、成员内部类 :外部类名.内部类名 对象名 = new 外部类名.new内部类名() 2、静态内部类 :外部类名.内部类名 对象名 = new 外部类名.内部类名() 3、方法内部类 :局部内部类在访问局部变量时,被访问的变量必须用 final 修饰 4、匿名内部类 :适用于一个对象只使用一次的场景,使用完毕就回收
小贴士 1、JDK 7之后整型数据可以“int a=2_147_483_647”这样赋值。 2、&&:如果在判断时得到的结果是false时,那么后面的计算就不会继续;||:如果在判断时得到的结果是true,那么后面的计算也不会继续。 3、按位与& 按位或& 按位异或^ 求反~ 左移<< 右移>> 4、运算符的优先级:括号、自加/减运算符(++,–,!)、 算术运算符(+,-,*,/)、比较运算符、逻辑运算符(&,|,^,||,&&)、赋值运算符(+=,?:,…)。 5、JDK 7 以后switch可以使用String作为判断条件。 6、面向对象思想简单概括起来就是三个:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。 7、static不依赖类特定的实例,被类的所有实例共享,静态方法不能访问类中的实例成员。 8、final修饰类,类不可以被继承。final修饰方法可以继承但是不可以重写。 9、字符串方法concat()可拼接 10、ArrayList遍历三种方式:
foreach 转换成数组 Iterator Java基础篇已分享完成,整理得有些乱,主要是一些基础和容易遗忘的知识归纳,如果有错误的地方,欢迎指出。
|