Kknock

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.注释

  用于描述代码功能与附加内容,有助于提高代码的可读性和可维护性,需要养成多注释规范注释的习惯。

  单行注释:// 示例注释

  多行注释:/*

       示例注释

       */

 

2.标识符和关键字

  Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

  1)所有标识符都应该由英文字母,美元符($)或者下划线(_)开头;

  2)标识符大小写敏感;

  3)不能使用关键字名作为变量名或者方法名;

  4)不建议用中文名作为标识符。

   

  上图为Java中常见的关键字。

 

3.数据类型

  ①Java数据类型主要分为两大类型:

  1)基本数据类型(primitive type)

  

  long类型一般会在数字后标注L,如123L

  float类型标注F

  char类型只能表示一个字符,比如char A = '中';

  2)引用数据类型(reference type)

  类、接口、数组

 

  ②所有的字符都是根据不同编码实现的(如Unicode编码、UTF-8编码或者ASCII码),所以本质上都是数字,可以通过字符类型强制转换,如下图示例(不同类型的数据必须得转换到同一类才可进行计算):

   结果:

 

  这里b就是以Unicode编码实现,1个字符占2个字节,共16位,可以表达0-65535,共65536个字符。

  同理,通过转义符"\u",以Unicode编码形式输出0062(即16进制下的98),可以打印出"b"字符:

   结果:

 

  ③转义符:通过"\"+字母表示特殊的符号,比如:

  \n 代表换行;\t 代表制表符,类似于TAB键,含8个空格

 

一个典型的面试题:

银行业务用哪种数据类型表示:

  ——不能使用浮点类型进行比较,因为浮点数计算存在舍入处理,不是完全精确的。

  ——这里需要用于大数计算的类来专门处理(BigDecimal)。

    结果:

 

 4.类型转换

  根据数据类型的容量大小,可以按如下顺序排列,其中小数的优先级高于整数。

  

  类型转换分为两类:

  1)强制类型转换,主要应用于高容量的数据类型向低容量转换,在转换时要考虑容量大小,避免内存溢出的场景。

  2)自动类型转换,主要应用于低容量的数据类型向高容量转换。

   结果:

 

  注意事项:

  1)不能对布尔类型进行转换;

  2)不能对不相干的数据类型进行转换,比如int转string;

  3)对数据进行类型转换时,要注意内存溢出或者精度问题,比如在将浮点类型转换为整型时,小数点之后的数字可能会被舍去;

  4)数据类型在进行计算时,是以当前数据类型进行计算,若出现精度损失或内存溢出问题,无法在之后通过数据类型转换修复,如下图所示:

   结果:

 

 备注:

  这里有个很有趣的现象,byte类型的数据相加得出来的数据类型居然是int类型,如下图所示:

   结果:

 

 网上查了下原因,下面援引一位前辈的解答:

  “要了解清楚这个问题的原因,必须要从Java虚拟机的指令集说起,每种指令代表了一种操作。

  首先要说明的是:在Java虚拟机中,对于大部分与数据类型相关的字节码指令,他们的操作码助记符中都有特殊的字符来表示专门为哪种数据类型服务。

       但是Java虚拟机的操作码长度只有一个字节,这就带来一个问题,如果每种与数据类型相关的指令都支持Java虚拟机运行时数据类型的话,显然一个字节就不够用了。  所以Java虚拟机规范中,这种特性"Not Orthogonal",并非每种数据类型和每一种操作都有对应的指令。

       大部分的指令都没有支持byte、char、short,没有任何指令支持boolean类型。编译器在编译期或者运行期将byte和short类型的数据带符号扩展为相应的int类型数据,将boolean和char类型数据零位扩展为相应的int类型数据。与之类似的,在处理byte、char、short和boolean类型的数组时,也会转换成对应的int类型的字节码指令来处理。因此,大多数对于byte、char、short和boolean类型数据的操作,实际上都是使用相应的int类型作为运算类型的。
————————————————
版权声明:本文为CSDN博主「alunSemiconductor」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ejiao1233/article/details/82292348

 

5.变量、常量以及作用域

  

  Java变量是最基础的存储单元,其要素包括变量名、变量类型和作用域。一般一条语句最好只声明一个变量。

  Java变量分为三种类型,分别是:

  1)局部变量:声明于方法内部,必须初始化值,作用域为当前方法内,其他方法无法调用;

  2)实例变量:声明于类之下,无修饰符,作用域为整个类之中,所有方法均可调用,但需要声明一个实例才可调用。调用后未初始化时为默认值,一般基础类型为0/0.0/null等,boolean类型默认值为false,剩余其他数据类型默认为null;

  3)类变量:声明于类之下,一般用static修饰符修饰,作用域为整个类之中,所有方法均可直接调用。

实例如图:

    结果:

 

   常量:常量是一组初始化之后就不可在修改内容的值,一般用final修饰符修饰(修饰符不分先后顺序),常量名一般全为大写字符。

 

  变量的命名规范:

  1)所有变量、方法、类名:见名知意;

  2)类成员变量:首字母小写和驼峰原则,如maxNum;

  3)局部变量:首字母小写和驼峰原则;

  4)常量:大写字符和下划线组合,如Max_Num;

  5)类名:首字母大写和驼峰原则,如ProjectDemo;

  6)方法名:首字母小写和驼峰原则,如addNum()。

 

6.运算符

  基本运算符:+、-、*、/、%(取模)、==、!=、++(自增)、--(自减)

  自增自减运算符有两种用法,a++意味着在执行当前语句后,执行a=a+1;++a意味着先执行a=a+1,再执行当前语句。--同理,如下图示例:

   结果:

 

   另外在计算幂、求绝对值、求对数等数学操作时,Java没有提供对应的符号,我们可以借用Math工具类来实现,结果会以double类型显示。

   结果: 

 

   逻辑运算符:&&(与)、||(或)、!(非)

  ——短路运算,即在进行逻辑运算,比如与运算时,计算机通过前一部分的计算已经可以确认当前算式结果,则不会对算式后面的表达式继续计算,如图所示:

   结果: 

  位运算符:&(与)、|(或)、^(异或,即不同为1)、~(非)、<<(带符号左移)、>>(带符号右移)、>>>(不带符号右移,对于正数来说没有区别)

 

一个典型面试题:

  2*8如何以最快的速度计算?

  ——实际上在位运算中这里就是将2左移了三位,所以用"System.out.println(2<<3);"即可快速计算结果。

 

  拓展赋值运算符:+=、-=、*=、/=,以+=为例,a+=b即为a=a+b,其他同理

  三元运算符:x?y:z,即为满足条件x,则结果为y,否则为z,示例:

   结果:

  备注:如果运算符存在加法,而加法一方为String类型,那么此次相加为字符串拼接,如下图所示:

   结果:

 

  运算符优先级:()优先级最高,所以初学者在编程时可以多通过()规范代码,提高易读性。

  

 

From:http://c.biancheng.net/view/794.html

 

 7.包机制

  java提供的用于区别类名的命名空间。

  定义包的语法结构为package pkgxxx,在代码中保持置顶,一般利用公司域名倒置作为包名,比如com.baidu;

  导入包的语法结构为import pkgxxx.classxxx(也可以为import pkgxxx.*选中该包下所有类),以此来调用其他包中的类供当前使用。示例如下:

  

 

8.JavaDoc文档

  javadoc命令是用来生成开发者自己的API文档的。首先我们需要在代码附加下列信息(附在类之上即为类的注释,附在方法上即为方法的注释),用以标注下列信息。

  @author:作者

  @version:版本号

  @since:指明需要使用的最早jdk版本

  @param:参数名

  @return:返回值情况

  @throws:异常抛出情况

  

  编写完帮助信息后,我们可以在命令提示行中使用

  "javadoc (参数:如-encoding UTF-8 和 -charset UTF-8,用来处理中文乱码) XXX.java"

  来生成XXX.java这段程序代码的API帮助文档(类似于https://docs.oracle.com/javase/8/docs/api/),方便之后代码的使用和维护。

  也可在IDEA中选择Generate JavaDoc来生成:

  

posted on 2021-03-03 21:16  Kknock  阅读(89)  评论(0)    收藏  举报