Java - 基本语法

骆驼式命名法与下划线法:

骆驼式命名法:名称中的每一个逻辑断点都有一个大写字母来标记;

下划线法:名称中的每一个逻辑断点都有一个下划线来标记;

骆驼式命名法:第一个单词以小写字母开始,第二个单词的首字母大写或每一个单词的首字母都采用大写字母;

小驼峰法:除第一个单词之外,其他单词首字母大写;

大驼峰法:所有单词首字母大写;常用于类名,命名空间等;

Java语法对大小写敏感;

Java应用程序中的全部内容都必须放置在类中;

类名的定义:

名字必须以字母开头,后面可以跟字母和数字的任意组合;

长度上基本没有限制;

区分大小写;

不能使用Java保留字(自带的关键字);

标准的命名规范:以大写字母开头的名词;若由多个单词组成,每个单词的第一个字母都应该大写;

注意:

字母:包括A-Z、a-z、$、_、和在某种语言中代表字母的Unicode字符(前面两个在英文中代表字母,还有其他国家语言中代表字母的字符);

数字:0-9、和在某种语言中代表数字的任何Unicode字符;

源代码的文件名必须与公共类的名字相同;

代码运行流程:

编译:通过命令 “Java 文件名.java” ,编译源文件,得到一个字节码文件 “文件名.class”,与源文件在同一个目录下;

运行:通过命令 “Java 文件名” 运行编译好的源文件(就是字节码文件),Java虚拟机将从指定类的main方法开始执行;

为了代码能执行,在类的源文件中必须包含一个main方法;

main方法的访问修饰符必须为public;

用 {} 括起来的代码被称为块;

三种注释:

// :快捷键:选中代码(可以是单行,也可以是多行),ctrl + /(添加和删除注释都是用这个快捷键);

/** */ :可以自动生成文档;

/* */ :不能嵌套;快捷键:选中,添加注释:ctrl + shift + /;去掉注释:ctrl + shift + \;

Java是一种强类型语言:就是说使用一个变量之前,必须为这个变量声明一种数据类型;

数据类型:

分为基本数据类型和引用数据类型;

基本数据类型分类(四类八种):

整型:byte、short、int、long;

浮点型:float、double;

字符型:char;

布尔型:boolean;

引用类型分类:

数组、字符串类型(String)、对象;

Java中,所有的数值类型所占据的字节数量与平台无关。这样代码在平台移植时就不会出现诸多问题;

长整型数值加后缀L;

十六进制数值加前缀0x;

八进制数值加前缀0;

二进制加前缀0b;(Java 7 开始)

float类型的数值加后缀F;不加默认为双精度型;(JDK 5.0 可以使用十六进制表示浮点数值)

double类型的数值加后缀D;(JDK 5.0 可以使用十六进制表示浮点数值)

表示溢出或出错情况的三个特殊的浮点数值:

正无穷大:Double和Float装箱类中有三个常量表示这三个值;

负无穷大:Double和Float装箱类中有三个常量表示这三个值;

NaN(不是一个数字):Double和Float装箱类中有三个常量表示这三个值;

判断一个数是不是NaN的方法:

用 x == NaN,不行,结果永远为false;

用 Double.isNaN(x); 来判断;

Java没有任何无符号类型(unsigned);

浮点数值不适用于禁止出现舍入误差的金融计算中,因为会有精度错乱问题,应该使用BigDecimal类来实现金融计算;

char类型:

ASCII中,字母和数字对应的数值范围要记住;

使用单引号,不能是双引号;

转义字符:记住常用的几个;

编码表的知识:

变量名的定义:

名字必须以字母开头,后面可以跟字母和数字的任意组合;

长度上基本没有限制;

区分大小写;

不能使用Java保留字(自带的关键字);

建议:使用驼峰命名法进行定义;

注意:

字母:包括A-Z、a-z、$、_、和在某种语言中代表字母的Unicode字符(前面两个在英文中代表字母,还有其他国家语言中代表字母的字符);

数字:0-9、和在某种语言中代表数字的任何Unicode字符;

变量的初始化:

变量必须声明;

变量声明之后必须显示初始化,然后才能被使用;

变量的声明和初始化可以同时进行;

常量:

使用final修饰的变量,表示这个变量只能被赋值一次,且一旦被赋值之后,就不能够再更改了;

习惯上,常量名使用全大写;

两种常量:

普通(局部)常量:

使用final修饰的变量;

定义在某个方法内部,只有本方法可以使用;

类(全局)常量:

使用 static final修饰的变量;

为了在一个类的多个方法中都可以使用这个常量;

定义在main方法的外部;

运算符:

算数运算符:+、-、*、/、%(求余运算,求操作数相除的余数)、++、--;

赋值运算符:=、+=、-=、*=、/=、%=;

关系运算符:>、<、>=、<=、==、!=;

逻辑运算符:&&、||、!;注意“短路”方式;

位运算符:&、|、^、~、>>、<<、>>>;

三元运算符:

数学函数与常量:

静态导入:不必在数学方法名和常量名前添加前缀“Math.”,只要在源文件的顶部加上这行代码即可:“import static java.lang.Math.*;”;

数值类型之间的转换:

记住一张图;

两个数值进行二元操作时类型转换(两个操作数要转换成同一类型再进行计算)的规律:

如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型;

否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型;

否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型;

强制类型转换:

为了使所占位数长的类型转换成位数短的类型;

可能会丢失数据,最后变成一个完全不同的值;

括号和运算符级别

枚举类型

字符串(这里讲的是不是通过new产生的字符串):

Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类:String;

每个用双引号括起来的字符串都是String类的一个实例;

当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串;

任何一个Java对象都可以转换成字符串;

是不可变字符串:定义好的字符串内容永远在那不会变,但引用它的字符串变量可以改变(引用其它字符串);

字符串常量保存在公共的存储池中,只保存一份,新的字符串变量再引入相同的字符串常量时,不会重新定义,直接共享存储池中已有的字符串常量;

equals()比较两个字符串(常量/变量)的内容是否相等,==比较两个字符串的地址是否相等;

只有字符串常量是共享的,所以使用==比较两个内容相同的字符串常量结果为true;

空串和null串:

空串:是一个Java对象,有自己的长度(0)和内容(空);

null串:目前没有任何对象与该变量关联;

检查一个字符串既不是空串也不是null串的方法:

if( str!=null && str.equals(“”)) 或者 if(str!-null && str.length()==0)

StringBuilder和StringBuffer

StringBuilder:效率较高、通常在单线程中使用

StringBuffer:效率较低、线程安全(允许采用多线程的方式执行添加或删除字符的操作)

Scanner类

不重要;

Console类

不重要;

使用静态的String.format()方法创建一个格式化的字符串;

读取文件,指定文件名时,如果文件名中包含反斜杠符号,必须要在每个反斜杠之前再加一个额外的反斜杠;

块及块作用域:

块(复合语句):由一对花括号括起来的若干条简单的Java语句;

一个块可以嵌套在另一个块中,但不能在嵌套的两个块中声明同名的变量;

块中定义的变量的作用域仅在本块中有效;

for循环:

三部分介绍:第一部分通常用于对计数器初始化;第二部分给出每次新一轮循环执行前要检查的循环条件;第三部分指示如何更新计数器;

如果在for循环内部定义一个变量,这个变量就不能在循环体外使用;所以如果希望在for循环体外使用循环计数器的最终值,就要确保这个变量在循环语句的前面且在外部声明;

在循环中,检测两个浮点数是否相等要格外小心;由于舍入的误差,得不到想要的精确值,可能导致循环永远不会结束;

switch选择语句:

可以包含的类型为:char、byte、short、int(或它们四个包装类)四个的常量表达式、枚举常量、字符串常量;

Java中的break和continue:

break可以作用在:循环、switch语句、条件语句;

continue可以作用在:循环;

带标签的break、continue和不带标签的break、continue;

大数值:

如果基本的整数和浮点数精度不能够满足需求,就是用BigInteger和BigDecimal这两个类;

BigInteger类实现了任意精度的整数运算;

BigDecimal类实现了任意精度的浮点数运算;

数组:

声明数组和初始化数组;

初始化数组时,数组长度可以是常量,也可以是变量(必须被初始化过);

可以 int[] a; 也可以 int []a; 还可以 int a[];

数组被初始化后,数字数组所有元素被初始化为0,boolean数组的所有元素被初始化为false,对象数组的所有元素被初始化为null;

一旦创建了数组,就不能改变它的大小:

int[] a = new int[10];

a = new int[11]; // 可以

a.length = 12; // 不可以,报错

一种简化写法:创建数组对象并同时赋予初始值;

匿名数组:使用匿名数组这种写法可以在不创建新变量的情况下重新初始化一个数组;

在Java中,允许将一个数组变量拷贝给另一个数组变量;这时,两个变量引用同一个数组;

Arrays.toString(数组变量);

更加简单的打印数组中的所有值的方法;

返回一个包含数组元素的字符串,这些元素被放置在中括号内,并用逗号隔开;

Arrays.copyOf(源数组, 源数组长度); Arrays.copyOf(源数组, int start, int end);

将源数组中所有元素值拷贝到新的数组中;

Arrays.sort(数值型数组);

对数值型数组进行快速排序,结果从小到大输出;

标识符的特点(要你自己取名字的地方:类名、属性名、方法名):

由字母、$、下划线、数字组成;

数字不能开头;

区分大小写;

不能和关键字一样;

注意:要见名知意、不要和java自带关键字重复;