java基础语法
java中的所有符号都是英文状态的,初学者尤其要注意!
注释
注释是帮助人们阅读理解程序的,当一个项目结构复杂起来时,有一份好的注释能让我们有效越多程序理解程序。java中的程序注释方法有三种,让我们来看看吧!
/*
多行注释
以斜杠星号开头,星号斜杠结尾
多行注释不可进行嵌套
开始标记和结束标记成对出现
*/
public class Hello{
/*
java程序的主入口,
main方法是程序的主线程。
*/
public static void main(String[] args){
//单行注释,注释掉此行的内容
//输出HelloWorld到输出设备
System.out.println("Hellow World!");
}
}
所有的注释都是不会被执行的,是便于人们阅读程序的,书写注释是一个很长好的习惯!
注释的三种方式
-
单行注释:只能注释当前行,以//开始
-
多行注释:注释一段文字,以斜杠星号开头,星号斜杠结束!
-
文档注释:用于生成API文档,配合JavaDoc使用。(初学者可以后面再掌握)
/** @item Hello类 @Author Diamond LoserCoder_(优快云) @version 1.5 */
标识符
类名、方法名、变量名都被称为标识符。
标识符命名规则
- 所有的标识符都只能以字母(A-Z或a-z)、美元符($)、下划线(_)开始
- 首字符之后可以是字母(A-Z或a-z)、美元符($)、下划线(_)、数字(0-9)的任意字符组合
- 不能使用关键字、保留字作为变量名或方法名
- 标识符大小写敏感(java严格区分大小写、Windows是不缺分大小写的)
- 合法标识符举例:name、item_01、HellowWorld
标识符命名规范
- 项目名、包名全部小写***baidu.com***
- 类名、接口名首字母大写,其余组成词首字母依次大写***JavaBasic***
- 变量名、方法名首字母小写,其余组成词首字母都要大写***intValue***
- 常量名全部大写,多个单词之间以_来分割***MAX_AGE***
- 所有变量、方法、类名;应该做到见名知意
关键字
保留字有 goto、const…
数据类型
java是一种强类型语言,每个变量都必须声明其类型。
java的整型常数默认为int型,浮点数默认为Double型
存储方式
- 位(bit):是计算机内部数据存储的最小单元,11001000是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单元,习惯上用大写B来表示,1B(字节)=8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
- ASCII码:
- 1个英文字母占一个字节的空间
- 1个中文汉字占两个字节的空间
- 1个ASCII码占一个字节
- UTF-8编码:
- 英文字符占一个字节
- 英文标点占一个字节
- 中文(含繁体)占三个字节
- 中文标点占三个字节
- Unicode编码
- 英文占两个字节
- 中文(含繁体)占两个字节
1bit表示1位、1Byte表示一个字节 1B=8b
1024B=1KB
1024KB=1M
1024M=1G
进制(2、8、10、16)
在java中的进制表达方法如下:
二进制整数,以0b或0B开头如:0b1010,0B10101
十进制整数,如:99,-52,0
八进制整数,以0开头,如:026
十六进制整数,以0x或0X开头,如:0xff,0Xf6
浮点型float,必须要在数后加f,如:0.153f
下划线分隔符,如:int b = 1_2345_6789;
演示:
int i1=0b10;
int i2=10;
int i3=010;
int i4=0x10;
System.out.println(i1);//2
System.out.println(i2);//10
System.out.println(i3);//8
System.out.println(i4);//16
类型转换
由于java是强类型语言,所以进行有些运算的时候,需要用到类型转换。
整型、实型(常量)、字符型数据可以混合运算
运算中,不同类型的数据先转化为同意类型,然后进行运算
转换从低级到高级(根据容量来看)
低--------------------------------------------------->高
byte,short,char-> int -> long -> long -> float -> double
数据类型转换必须满足如下规则:
- 不能对boolean类型进行类型转换
- 不能把对象类型转换成不相关类的对象
- 在把存储空间大的类型转换为空间小的类型时,必须使用强制类型转换。且转换过程中容易溢出或损失精度
- 浮点数到整数的转换是通过舍弃小数得到的,而不是四舍五入
自动类型转换
自动类型转换:容量小的数据类型可以运算中自动转换为容量大的数据类
[演示]
int a=2;
char b='a';
int c = a + b ;//char 和 int 类型计算,char自动转换为int型参与计算
强制类型转换
强制类型转换,又被称为造型,用于显示的转换一个数值的类型,是人为造成的一种类型转换
强制类型转换的语法格式: (type)var 运算符“()”中的type表示将值var想要转换成的目标数据类型。条件是转换的数据类型必须是兼容的。
[演示]
double x = 3.1415926 ;
int pi = (int)x ; //强制将double型数据转换为int型,此处值为3
当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同 的值,溢出。
变量、常量
变量(variable)
变量:可以变化的量
我们通过变量名来操控存储空间中的数据,变量就是指代这个存储空间!空间位置是确定的,但是里面放的值不确定!
type varName [=value][{,varName[=value]}];
//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法标识符
- 以分号结束,变量使用前必须初始化,赋值,不然java会报错
变量的作用域
变量的作用域可划分为三种:
- 类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰。
- 实例变量(成员变量:member variable):独立于方法之外的变量,不过没有 static 修饰。
- 局部变量(lacal variable):类的方法中的变量。
[演示]
public class item{
static int a = 0; //类变量
String str="Hellow World!"; //实例变量
public void fun{
int i = 0; //局部变量
}
}
局部变量
方法或语句块内部定义的变量。生命周期是从声明位置开始到”}”为止。 在使用前必须先声明和初始化(赋初值)。局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
实例变量
方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
静态变量
使用static定义。从属于类,生命周期伴随类始终,从类加载到卸载。
如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
常量(Constant)
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。可以理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
[演示]
final 常量名 = 值 ;
final double PI=3.1415926;
运算符
运算符 operator
java有如下运算符:
- 算术运算符:+(可用于字符串连接)、-、*、/、%、++、–
- 赋值运算符:=、+=、-=、*=、/=、%=…
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&、|、^、~、>>、<<、>>>(无符号右移)、
- 条件运算符: ?:(三目运算符)
- 后缀运算符: ()、[]、.(点操作符)
运算符优先级:
需要注意的点
三目运算符
public static void main(String[] args) {
// write your code here
char x = 'x';
int i = 10;
System.out.println(true ? x : i);//120
System.out.println(true ? x : 10);//x
System.out.println(true ? 'x' : i);//120
System.out.println(true ? 'x' : 10222222f);//120.0
System.out.println(true ? 'x' : 10222222);//120
System.out.println(true ? 'x' : 10);//x
}
如果其中有一个是变量,按照自动类型转换规则处理成一致的类型;
如果都是常量,如果一个是char,如果另一个是[0~65535]之间的整数按char处理;
包机制
存在一个问题:当定义了多个类的时候,可能会发生类名的重复问题。
解决方式:在java中采用包机制处理开发者定义的类名冲突问题。
包的作用:
- 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
- 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类 的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可 以避免名字冲突。
- 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接 口、枚举(enumerations)和注释(annotation)等。
包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]];
//实例
package net.java.util;//把当前文件保存在相应的包内
public class Something{
. . .
}
那么它的路径应该是 net/java/util/Something.java 这样保存的。 package(包) 的作用是把不同的 java 程序分类保存,更方便的被其他 java 程序调用。
一个包(package)可以定义为一组相互联系的类型(类、接口、枚举和注释),为这些类型提供访问 保护和命名空间管理的功能。
以下是一些 Java 中的包:
- java.lang 打包基础的类
- java.io 包含输入输出功能的函数
开发者可以自己把一组类和接口等打包,并定义自己的包。而且在实际开发中这样做是值得提倡的,当 你自己完成类的实现之后,将相关的类分组,可以让其他的编程者更容易地确定哪些类、接口、枚举和 注释等是相关的。
由于包创建了新的命名空间(namespace),所以不会跟其他包中的任何名字产生命名冲突。使用包这 种机制,更容易实现访问控制,并且让定位相关类更加简单。
创建包
创建包的时候,你需要为这个包取一个合适的名字。之后,如果其他的一个源文件包含了这个包提供的 类、接口、枚举或者注释类型的时候,都必须将这个包的声明放在这个源文件的开头。
包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。
如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包 (unnamed package)中。
一般利用公司域名倒置作为包名;
www.baidu.com 包名:com.baidu.www
import关键字
为了使用某一个包中的成员,我们需要在java程序中明确导入该包。使用"import"语句可完成此功能。
-
在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多 条.
-
如果在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略。
-
要是要用到其他包下的类,就必须要先导包!
-
如果两个类重名,需要导入对应的包,否则就需要写出完整地址
-
用import关键字导入,使用通配符"*",导入io包下的所有类!
improt java.io.*;//导入指定类
-
使用import关键字引入指定类;
【注意】类文件中可以包含任意数量的import声明,import声明必须在包声明之后,类声明之前。
JavaDoc
JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了。
javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配 套的API帮助文档。也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过 Javadoc就可以同时形成程序的开发文档了。javadoc命令是用来生成自己API文档的,使用方式:使用 命令行在目标文件所在目录输入javadoc +文件名.java。