一、命名规范(很全的规范链接)

1、项目名全部小写
2、包名全部小写
3、类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。
4、变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。
5、常量名全部大写

二、关于java的一些常识

1、main方法是程序执行的入口

2、一个源文件(.java文件)中可以包含多个类(.class文件),也就是说编译一个源文件可能会有多个类文件

public class Welcome{
	public static void main(String[] args){    //args是arguments的缩写
		System.out.println("de");  
	}
}

class  Man{
}

class Car{
}

class Computer{
}

这样的一段代码编译之后只有一个Welcom.java,但是可以编译出Man.class,Car.class,Compute.class  3个文件。 

      

java小于号存到数据库转义了 java中小于怎么表示_String[] args

3、String[] args 和String args[]的区别

执行效果上没有不同,基本上可以当作是一样的了。这两种写法就是依照个人的习惯,第一种用的比较普遍。

4、args

            args其实就像我们写了一个自定义函数,传入自定义函数中的参数。args就是传入main函数中(String[])数组的参数。               可是main函数作为程序(application程序)的执行入口,是由系统自动调用的,怎样传递参数给它呢? 现在很多人编码都是使用集成工具(eclipse、netbean......),这些工具直接运行,是不会有参数传递给main的,如果要设置参数,以eclipse为例,选择:Run->Run Configurations,弹出窗口Run Configurations,Arguments->Project里就可以设置传递给args的参数。请记住java(其他语言我不清楚)的参数之间是用空格来分开的,不要用逗号。

                

java小于号存到数据库转义了 java中小于怎么表示_VM arguements_02

我设置了四个参数传入main函数。

import java.util.Scanner;


public class Hello {
	public static void main(String[] args){
		System.out.println(args.length);
		System.out.println(args[0]);
		System.out.println(args[1]);
		System.out.println(args[2]);
		System.out.println(args[3]);
		System.out.println(args[4]);
	}
	
}

运行上面这段代码。结果如下

 

java小于号存到数据库转义了 java中小于怎么表示_VM arguements_03

可以看见参数的长度为4,参数1、2、3、4也都打印出来了,我再想打印不存在的第5个参数的时候出现了异常。

5、VM arguements

肯定会有人疑问VM arguments是做什么的。Program arguments 是传参数给运行的应用程序,VM arguments就是传参数给java虚拟机,来进行对java虚拟机的设置。有兴趣深入了解的可以看看。推荐链接

6、main打错了会如何

打错了main编译的时候是不会显示错误的,但当运行时就行提示找不到main方法了。

java小于号存到数据库转义了 java中小于怎么表示_VM arguements_04

7、64位电脑为什么运行不了32位的Eclipse?

             我这个问的其实不太准确。软件的版本有个向下兼容的原则(大部分都有),也就是说,高版本支持低版本的或者说后期开发的版本支持和兼容早期开发的版本。Eclipse当然也支持。                                                                                                                  但笔者有一次在U盘里面拷贝了一个32位版本的Eclipse,运行的时候就出现了兼容性问题。                                                            不知道你还记不记得,最初配置环境的时候,有过这个”变量名‘JAVA_HOME’,变量的值’C:\Java\jdk1.8.0_05‘(即JDK的安装路径)“。问题的源头出在这里,是电脑里用的的JDK是64位的,和32位的Eclipse用不到一块去。所以64位的操作系统是可以运行32位的Eclipse的,只不过要记得把JDK改成对应的版本才行。

8、关于注释代码

注释代码只存在与java源码中,等运行javac进行编译时,注释会被javac自动省略,也就是说注释的多少不会影响字节码文件的大小,也就是不会影响最终程序的大小。

警告:Unicode转译序列会在解析代码之前得到处理。

例1:// \u00A0 is a newline  会产生一个语法错误,因为在读程序时\u00A0 会替换为一个换行符。                                                 也就变成了这样的效果 “ //                                                                                                                                                                                                        is a new line” 无疑是会报错的。

例2:// Look inside c:\users   也会产生错误,因为\u后面没有跟着4个十六进制数。

9、‘a’与“a”的区别

‘a'是字符类型(char),‘ ’之间只能放一个字符(空格也单独算是一个字符),也就是说char a = 'ab'; 就是错误的。               “a”是字符串类型(String) 大神对String类型的专业分析链接。实际上Java没有内置的字符串类型,而是在标准的Java类库中提供了一个预定义类,很自然的叫做String。所以每个用双引号括起来的字符串都是String类的一个实例。

 

10、Java可以采用中文命名吗?

Java不采用通常语言使用的ASCII字符集,而是采用Unicode这样标准的国际字符集。因此,这里字母的含义不仅仅是英文,还包括汉字等等。但是不建议大家使用汉字来定义标识符!

11、Java文件只能有一个main方法吗?

每一个java文件都会有一个public static void main(String[] args)作为程序作为入口。但如果去了public是可以存在多个的。但一个类也只允许最多存在一个或者没有。区别就在于class前的public。

12、变量初始值问题

一般的变量声明之后,不赋初值是用不了的。但有二种变量不太一样 。                                                                                           成员变量(又叫实例变量)和静态变量,如果没有赋值,会进行自动初始化。

java小于号存到数据库转义了 java中小于怎么表示_VM arguements_05

‘\u0000’打印出来就是空格。

13、局部变量、成员变量、静态变量的生命周期

使用static 关键字进行声明的变量叫做全局变量    周期:从属于类,生命周期伴随类始终,从类加载到卸载。
在函数外面定义的变量叫做成员变量                     周期:从属于对象,生命周期伴随对象始终。                                                     在函数内定义的变量叫做局部变量                         周期:从声明位置开始到到方法或语句块执行完毕为止。                                  顺便说一下“常量(Constant)”,利用关键字final来定义一个常量。 常量一旦被初始化后不能再更改其值。如果一个量又用final,又用static,那个你可以认为它是个固定值的全局变量。

14、基本数据类型

                                    

java小于号存到数据库转义了 java中小于怎么表示_兼容性_06

口诀:基本数据类型,三大类八小类。引用数据类型就指向对象,占用四个字节,代表对象的地址。                                             注意:这里的类型大小一般都已字节为单位。比如long、double都是8字节。但有一个布尔型(boolean)是以位bit为单位的。并且在C++中boolean值0相当于false,但在java中int类型0、1与false、true不能转换。

 15、java的char类型只有两个字节为什么可以存储汉字?

通常gbk/gb2312是2个字节,utf-8是3个字节。 如果还不理解,可以先去理解字符集和字符编码的区别。java核心技术强烈建议不要再程序中使用char类型,除非你需要处理UTF-16编码。

 16、运算符“/”(这个好基础呀)

当参与/运算的两个操作数都是整数,表示整数除法,结果为整数。否则,表示浮点除法,结果为小数。                                         当整数被0除,会得到一个异常。Exception in thread "main" java.lang.ArithmeticException: / by zero                                             当浮点数被0除,将会得到无穷大(Infinity)或NaN(not a number)的结果。

17、java的计算精度问题(如果开发担心计算结果不同,可移植性问题,可以去了解一下StrictMath类和java.math不产生舍入误差的数字精确计算:BigDecimal和BigIbteger类)

在默认情况下JVM设计者允许对中间计算结果采用扩展的精度。(就是使用了80位寄存器,结果更加精确,还能够避免产生指数溢出,但这个结果可能与64位机器上的计算结果有点误差)你也可以使用strictfp关键字来标记方法,这样在这个方法中的所有指令都将使用严格的浮点计算(这样好处是不会产生误差,可移植性高。但可能指数溢出,计算结果不精确,以及相比前面计算的速度要慢些)。不过,Intel处理器的芯片在截断尾数时并不损失性能,也就是说后者可能速度也不会变慢,这个取决于Intel处理器的行为。

例:标记main方法 :  public static strictfp void main(String[] args)

顺便感受一下java.math的魅力:采用大数值进行运算。

假设你被邀请参加抽奖活动, 并从 490 个可能的数值中抽取 60 个, 这个程序将会得到中彩概率 1/71639584346199555741511622254009293341171761278926349349335101345948110466 8848。

18、数学函数

println方法和sqrt方法:前者处理System.out对象,后者处理的不是对象,后者是静态方法。                                                        floorMod方法和%(转):

如果参数的符号相同,则floorMod和%运算符的结果是相同的。

floorMod(4, 3) == 1;   and (4 % 3) == 1

如果参数的符号不同,则结果与%运算符不同。

floorMod(+4, -3) == -2;   and (+4 % -3) == +1
floorMod(-4, +3) == +2;   and (-4 % +3) == -1
floorMod(-4, -3) == -1;   and (-4 % -3) == -1

 19、字符串相等(引入公共储存池概念:String池)

 判断字符串相等:str.equals("xxx")。

判断字符串相等不区分大小写:str.equalsIgnoreCase("xxx")。

注意一定不要使用“==”来进行判断。

原因:我们进行字符串相等判断时,其实是判断2个字符串是否放在同一个位置上,相同内容的字符串是有可能性存放在不同位置的。

字符串不是Java的类型,是String类的实例,String类没有提供修改字符串的方法(当然你可以使用其它类方法:substring,这很方便)。所以字符串是不可变的(不是说字符串变量)。就像我们的数字3永远是数字3一样。Java中的一个字符串也永远只是那个字符串,这些字符串都有一个地址(不唯一,但一般都唯一,Java设计者认为共享效率高)。当我们申明字符串变量str1和str2的时候,对两个变量都赋值“Java”(字符串“Java”对应一个地址),实际上是将两个变量都跟这个地址关联起来。这个就是公共存储池的概念(字符串变量指向储存池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符串位置)。Java运行时会维护一个共享池,在进行字符串的相关操作时,会现在共享池中进行寻找有没有这个字符串,有就不会创建新的实例。

例子:

str1和str2字符串位置相同:String str1=“abcdefg”;String str2=“abcdefg”;

str1和str2字符串位置不同:String str1= new String("abcdefg"); String str2= new String("abcdefg");

原因:new关键词会开辟一个新的地址。字符串常量共享地址,字符串变量就不一定了。

20、空串和NULL串

"":空串。长度为0,内容为空。检测是否为空串方法:if(str.length()==0)或if(str.equals(""))

NULL串:表示目前没有任何对象与该变量关联。检测NULL串方法:if(str != null)

如果自一个NULL串上调用方法会出现错误。

 

一次更新几个问题不固定,根据文章内容长度更改:

Java中遇到的一些常识性小问题(1~20):链接

Java中遇到的一些常识性小问题(21~40):链接