博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java - Tips
阅读量:6171 次
发布时间:2019-06-21

本文共 7246 字,大约阅读时间需要 24 分钟。

001 - Java中print、printf与println的区别?

  • printf:格式化输出,用来控制输出的格式。
  • print:标准输出,不换行。
  • println:标准输出,换行。例如,println("test")相当于print("test\n")。

示例:

package test;public class Test {    public static void main(String[] args) {        System.out.print("test");        System.out.print("test\n");        System.out.println("test");        int number1 = 123;        double number2 = 456;        System.out.printf("number1的值为%s,number2的值为%.4f", number1, number2);    }}/* 输出结果:testtesttestnumber1的值为123,number2的值为456.0000 */

002 - Java编程规范

003 - jar、war、ear包的作用与区别

  • jar: 把开发时要引用通用(JAVA)类及资源做封装,打成包后便于存放管理;
  • war:一个(web)完整的应用,通常是网站或WEB平台,打成包部署到容器中;
  • ear: 企业级应用,实际上EAR包中包含WAR包和几个企业级项目的配置文件而已,服务器中间件通常选择WebSphere等都会使用EAR包。通常是EJB打成ear包。

004 - JAVA转义字符

1.八进制字符(\ddd)ddd表示1到3位八进制数字,范围‘\000~\377’ 2.十六进制Unicode字符(\uxxxx)xxxx表示4个十六进制数字,对应的unicode字符范围‘0~65535’ 3.特殊字符\"  双引号\'  单引号\\  反斜杠4.控制字符\r 回车\n 换行\f 换页\t 制表\b 退格\s 空格5. 标点符号字符可以转义为对应的十六进制Unicode字符,例如:美元符号的转义:$ ==> u0024 左圆括号的转义:( ==> u0028 右圆括号的转义:) ==> u0029星号的转义:* ==> u002A 加号的转义:+ ==> u002B 逗号的转义:, ==> u002C减号的转义:- ==> u002D 点的转义:. ==> u002E除号的转义:/ ==> u002F问号的转义:? ==> u003F左方括号的转义:[ ==> u005B 右方括号的转义:[ ==> u005D乘方符号的转义:^ ==> u005E左大括号的转义:{ ==> u007B竖线的转义:| ==> u007C右大括号的转义:} ==> u007D......

示例:

package test;public class Test {    public static void main(String[] args) {        char mychar = '\\';        char mychar2 = '\076';        String mystr = "\u003F";        System.out.println("示例:" + mychar + " 示例:" + mychar2 + " 示例:" + mystr);    }}

005 - Java逻辑运算符&&与&的区别

  • “&&”具有短路功能,如果计算表达条件式为false,则不再计算后续的表达式条件,直接判断结果为false。
  • “&”不具有短路的功能,会计算所有表达式条件,然后给出判断结果。

建议使用“&&”。

例如:“(5>8)&&(9>3)”和“(5>8)&(9>3)”的结果虽然都是false,但“(5>8)&&(9>3)”中只计算了表达式条件(5>8)。

006 - Java设计模式

人人都能读懂的设计模式

面试被问设计模式?不要怕看这里

007 - Java命名规范

大小写

  • 包的名称:字母均为小写
  • 类的名称:首字母大写;如有多个单词,每个单词首字母大写

  • 方法、变量、对象的名称:首字母小写;如后续有多个单词,每个单词首字母大写
  • 常量的名称:字母均为大写

  • 接口的名称:首字母"I"开头;如有多个单词,每个单词首字母大写
  • 接口实现类的名称:去除接口名称首字母"I",以"Impl作为结尾";如有多个单词,每个单词首字母大写

包名称的前缀

为保障每个Java Package命名的唯一性,一般使用具有唯一性的域名作为包名称的前缀。

  • 公司项目(com):由公司发起和完成,opyright属于该公司。“com.公司名.项目名.模块名.……”
  • 团队项目(team):由团队发起和完成,copyright属于该团队。命名形式:“team.团队名.项目名.模块名.……”。
  • 个体项目(individual, indi):个人发起,但非独自完成,可公开或私有,copyright主要属于发起者。命名形式为:“indi.发起者名.项目名.模块名.……”。
  • 个人项目(personal, pers):个人发起,并独自完成,可分享,copyright主要属于个人。命名形式为:“pers.个人名.项目名.模块名.……”。
  • 私有项目(private, priv):个人发起,独自完成,私有非公开,copyright属于个人。命名形式为:“priv.个人名.项目名.模块名.……”。

008 - 重写与重载之间的区别

区别点 重载方法 重写方法
参数列表 必须修改 一定不能修改
返回类型 可以修改 一定不能修改
异常 可以修改 可以减少或删除,一定不能抛出新的或者更广的异常
访问 可以修改 一定不能做更严格的限制(可以降低限制)

009 - Collection和Collections的区别

Collection是接口,Collection层次结构中的根接口,常用的子接口有List和Set等。

Collections是类,位于java.util包,是object的子类,此类完全由在collection上进行操作或返回 collection的静态方法组成。

010 - Java高并发

011 - Java中“==”与equals()的区别

“==”

  • 对于基本数据类型的变量,直接比较“值”是否相等;
  • 对于引用类型的变量,比较对象的地址;

equals()方法

  • 不能作用于基本数据类型的变量;
  • 引用类型的变量, 默认比较对象的地址;
  • 如果String、Date等类对equals()方法进行重写,可实现比较对象的内容;
        

012 - Java中equals()方法与hashCode()方法的区别

equals()方法用来比较对象是否相等;hashCode()方法用来计算并返回出对象实例的哈希码(散列函数);

  • 两个对象,如果equals()相等,hashCode()一定相等。
  • 两个对象,如果hashCode()相等,equals()不一定相等。
    简而言之,equals()方法是在hashCode()方法一致的基础上的再判断。

013 - Java的instanceof运算符

双目运算符,运算符前面是一个对象实例,运算符后面是一个类(接口)。

instanceof运算符用于判断前面的对象是否是后面的类(子类、实现类、接口)的实例。若是,返回true;否则,返回false。
使用instanceof运算符,必须满足以下其中一个条件,否则会引起编译错误:

  • 前面的操作元编译时的类型,与后面的类型相同
  • 前后的操作元类型,有父子继承关系
package anliven;public class Temp {    public static void main(String[] args) {        Object obj = "Hello,Java!"; // 使用Object类声明对象obj,则obj编译时的类型是Object,但obj的实际类型是String        System.out.println("是否是Object类的实例:" + (obj instanceof Object)); // Object类是所有类的超类        System.out.println("是否是String类的实例:" + (obj instanceof String)); // String类是Object类的子类        System.out.println("是否是Comparable接口的实例:" + (obj instanceof Comparable)); // String类实现了Comparable接口        System.out.println("是否是Math类的实例:" + (obj instanceof Math)); // //Math类是Object的子类        // String str = "Hello,Java!";        // System.out.println("是否是Math类的实例" + (str instanceof Math)); // 编译报错    }}

014 - 强制类型转换

  • 基本数据类型之间
    只能在数值类型之间进行,数值类型和布尔类型之间不能进行转换。
  • 引用类型之间
    只能在具有继承关系的两个类型之间进行。两个没有继承关系的类型进行强制转换会发生编译错误。
    如果试图把一个父类实例转换成子类类型,则这个对象必须实际上是子类实例(即编译时类型为父类类型,运行时类型为子类类型),否则将会在运行时引发ClassCastException异常。
    可以通过使用instanceof运算符判定两个类型是否具有继承关系,从而避免出现异常。

015 - 向上转型与向下转型

向上转型(upcasting)

  • 子类引用的对象转换为父类类型,也就是将子类对象转为父类对象(此处父类对象可以是接口)
  • 向上转型不用强制转型

向下转型(downcasting)

  • 父类引用的对象转换为子类类型
  • 向下转型必须强制转换类型
package anliven;class Animal { // 父类    public String getName(String str) {        return "Name:" + str;    }}class Dog extends Animal { // 子类    public void doorKeeper() {        System.out.println("The dog overwatches his master's house.");    }}interface ITree { // 接口    public String getName();}class AppleTree implements ITree { // 实现接口    public String getName() {        return "Tree: AppleTree";    }    public void getFruit() {        System.out.println("Fruit: Apple");    }}public class Temp {    public static void main(String[] args) {        // 类        Animal testAnimal = new Dog(); // 向上转型,new出来的Dog类对象赋值给了Animal父类对象        System.out.println(testAnimal.getName("Dog"));        // testAnimal.doorKeeper(); // 提示错误,对象实例无此方法        Dog testDog = (Dog) testAnimal; // 向下转型, 类对象赋值给子类对象,向下转型是向上转型之后才能执行的操作        testDog.doorKeeper();        testDog.getName("Dog");        // 接口        ITree testITree = new AppleTree(); // 接口向上转型        System.out.println(testITree.getName());        // testITree.getFruit(); // 提示错误,对象实例无此方法        AppleTree testAppleTree = (AppleTree) testITree; // 接口向下转型        testAppleTree.getFruit();        System.out.println(testAppleTree.getName());    }}

016 - 注释

单行注释:以两个正斜杠“//”开始,到行尾结束。

多行注释:以一个正斜杠紧跟着一个星号"/*"作为开始,并以一个星号紧跟一个正斜杠作为结束。
单行注释和多行注释可以彼此嵌套,但多行注释不能再嵌套多行注释。

文档注释:

用来生成代码的外部文档。
类似于多行注释,以一个正斜杠紧跟着两个星号"/**"作为开始,并以一个星号紧跟一个正斜杠作为结束。
应该针对公有类、接口、方法和实例变量,使用文档注释。

017 - 使用Eclipse生成文档(javadoc)

在源代码中为类、方法、变量等添加符合Javadoc语法的描述信息, 就可以使用Javadoc工具将描述信息自动生成一个HTML格式的帮助文档。

使用eclipse生成文档的3种方法

  1. 项目列表右键选择Export---》选择Java下的Javadoc---》Javadoc command选择jdk的javadoc.exe目录,自定义保存路径Destination---》点击Finish,生成文档。
  2. 菜单栏File---》点击Export---》后续步骤与方法一相同。
  3. 选中项目---》菜单栏Project---》点击Generate Javadoc---》后续步骤与方法一相同。

018 - Java关键字

abstract    表明类或者成员方法具有抽象属性assert  用来进行程序调试boolean 基本数据类型之一,布尔类型break   提前跳出一个块byte    基本数据类型之一,字节类型case    用在switch语句之中,表示其中的一个分支catch   用在异常处理中,用来捕捉异常char    基本数据类型之一,字符类型class   类const   保留关键字,没有具体含义continue    回到一个块的开始处default 默认,例如,用在switch语句中,表明一个默认的分支do  用在do-while循环结构中double  基本数据类型之一,双精度浮点数类型else    用在条件语句中,表明当条件不成立时的分支enum    枚举extends 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口final   用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块float   基本数据类型之一,单精度浮点数类型for 一种循环结构的引导词goto    保留关键字,没有具体含义if  条件语句的引导词implements  表明一个类实现了给定的接口import  表明要访问指定的类或包instanceof  用来测试一个对象是否是指定类型的实例对象int 基本数据类型之一,整数类型interface   接口long    基本数据类型之一,长整数类型native  用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的new 用来创建新实例对象package 包private 一种访问控制方式:私用模式protected   一种访问控制方式:保护模式public  一种访问控制方式:共用模式return  从成员方法中返回数据short   基本数据类型之一,短整数类型static  表明具有静态属性strictfp    用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范super   表明当前对象的父类型的引用或者父类型的构造方法switch  分支语句结构的引导词synchronized    表明一段代码需要同步执行this    指向当前实例对象的引用throw   抛出一个异常throws  声明在当前定义的成员方法中所有需要抛出的异常transient   声明不用序列化的成员域try 尝试一个可能抛出异常的程序块void    声明当前成员方法没有返回值volatile    表明两个或者多个变量必须同步地发生变化while   用在循环结构中

019 - Java信息网站

020 - Java在线教程

转载于:https://www.cnblogs.com/anliven/p/6947455.html

你可能感兴趣的文章
nslookup错误
查看>>
我的友情链接
查看>>
Supported plattforms
查看>>
做自己喜欢的事情
查看>>
CRM安装(二)
查看>>
Eclipse工具进行Spring开发时,Spring配置文件智能提示需要安装STS插件
查看>>
NSURLCache内存缓存
查看>>
jquery click嵌套 事件重复注册 多次执行的问题
查看>>
Dev GridControl导出
查看>>
开始翻译Windows Phone 8 Development for Absolute Beginners教程
查看>>
Python tablib模块
查看>>
站立会议02
查看>>
Windows和Linux如何使用Java代码实现关闭进程
查看>>
0428继承性 const static
查看>>
第一课:从一个简单的平方根运算学习平方根---【重温数学】
查看>>
NET反射系统
查看>>
Oracle12C本地用户的创建和登录
查看>>
使用JS制作一个鼠标可拖的DIV(一)——鼠标拖动
查看>>
HDU problem 5635 LCP Array【思维】
查看>>
leetcode10. 正则表达式匹配
查看>>