java基本语法
注释、标识符、关键字
注释
注释用于理解代码,你自己(过一段时间你可能不知道你以前写的是什么鬼,尤其是需要长时间完成的)和别人都需要。在编译时不会被执行,只用于程序员自己阅读理解代码。
-
单行注释————//
每次注释一行,在行首加//,见下例。
//jdijdioqjd
-
多行注释————/* */
用于需要注释很多行时,见下例。
/* public class Hello { public static void main(String[] args) { System.out.println("hello,world!"); //jdijdioqjd } } */
-
Javadoc注释,作用是针对整个方法或者整个类做一个简要的概述的,使得别人不通过看具体方法代码就能知道某个方法或者某个类的作用和功能。
/**
*/
上面为格式,每句前都要加*,见下例。
/** * Class {@code Object} is the root of the class hierarchy. * Every class has {@code Object} as a superclass. All objects, * including arrays, implement the methods of this class. */
标识符
用来表示类名,变量名,方法名,类型名,数组名,文件名的有效字符序列称为标识符。
- 只有字母(区分大小写),下划线,美元符号和数字组成,长度不受限制。
- 字母包括英文26个字母 ,汉字,日文,朝鲜文,俄文,希腊字母,但最好英文且第一个不能是数字。
- 不能是关键字
- 不能是true false null(这三个都不是关键字)
关键字
java规定好的一些字,有特别意义的标识符。java一共有53个。
数据类型
- java是强类型语言,要求变量的使用要严格符合规定,所有变量先定义在使用。安全性高,速度慢。
- java分为基本类型(8种)和引用类型(除8种之外的都是这类)
基本类型(primitive type)
- 四大类,整数类型、浮点类型(小数、分数)、字符类型(汉字符号、字母符号)、boolean类型(真、假)
-
byte
占一个字节,范围-128—127
-
short
占两个字节,范围-32768—32767
-
int(最常用)
占四个字节,范围-2147483648—2147483647
-
long
占八个字节,范围-9223372036854775808—9223372036854775807
使用大写L
long a=50L; //long需要在赋值时加 L
-
拓展
超出所能标识的范围会报错。使用强制类型转换不报错,但数值不是所赋值(内存溢出)。
jdk7新特性,可以用下划线分割数字
二进制表示—0b
八进制表示—0
十六进制表示—0x
int a=0b10; int b=010; int c=10; int d=0x10; int e=1000_000_000;
-
float(单精度浮点)
占四个字节,F用大写。
float b=30.1F; //float需要在后面加F
-
double(双精度浮点)
占八个字节
-
拓展
银行业务小数使用,需使用类BigDecimal(数学工具类),浮点数存在舍入误差,接近但不等于。
应该少使用浮点数比较
float a1=0.1f; double a2=1.0/10; System.out.println(a1); System.out.println(a2); System.out.println(a1==a2);//输出false float b1=231313231313231313f; float b2=b1+1; System.out.println(b1); System.out.println(b2); System.out.println(b1==b2);//输出true
-
char(字符类型)
占两个字节,例如‘中’、'A’等
-
拓展
所有的字符本质是数字,Unicode编码、两字节、最多65536
char c='\u0061' //输出a
转义字符\(反斜杠)
Unicode转义字符:\u + 四个十六进制数字
双引号:\ "
单引号:\ ’反斜线: \ \
回车:\r
换行:\n
走纸换页:\f
横向跳格(制表符):\t
退格:\b -
boolean(布尔类型)
占一位,其值只有true和false
boolean flag1=true; boolean flag2=false;
注:8位(bit)=1字节(B),B、KB、MB等相差1024
引用类型(reference type)
-
包含类、接口、数组
类:String,Integer,Byte等
类型转换
因为java是强类型语言,有些运算需要类型转换。运算中不同类型的数据先转化为同一种,再运算。
容量低——>高、byte、char、short—int—long—float—double
强制类型转换,需要在变量名前加、(要转类型)变量名
自动类型转换,与容量高的类型做运算,不用人为转换,会自动转换。
注
- 不能对布尔类型(Boolean)转换
- 不能把对象类型转换为不相关的类型
- 把高容量向低容量转换时,强制转换
- 转换时可能存在内存溢出、精度问题
int a=10_0000_0000;
int b=20;
int c=a*b;
//c的值为一个负数,因为内存溢出
long c1=a*b;
//c1的值还是一个负数,因为计算结束后才进行的类型转换
long c2=(long)a*b;
//输出c2为正确结果
变量常量
变量
- 可以变化的量
- 每个变量都要有类型,可以是引用类型也可以是基本类型
- 变量名必须是合法的,每一个变量申明玩分号(;)结束
作用域
有三类,类变量、实例变量、局部变量
- 类变量,方法外面,类里面,需要加static,与类一起出来一起消失
- 实例变量,方法外面,类里面,从属于对象,使用不便。有默认值整数位0、0.0,布尔值为false,除了基本类型(所有引用类型?)都是null。
- 局部变量,只在方法里面使用必须先初始化赋值
变量名注意事项
- 所有变量、方法、类名,见名知意
- 类成员变量,首字母小、驼峰原则,monthSalary
- 局部变量,首字母小写、驼峰原则
- 常量,大写字母、下划线,MAX_month
- 类名,首字母大写、驼峰原则,Man、GoodMan
- 方法名,首字母小写、驼峰原则,run()、runMan()
常量
- 初始化之后不会在变动的值,也可理解为特殊的变量赋值之后不可再改动
- 常量名一般用全大写
- 定义时在类型名之前加final,是修饰符
int a=10;
//变量类型 变量名=赋值
注
不建议在一行定义多个值
运算符
-
算术运算符,+、-、*、/、%、++、–
a++,先执行语句在自增,–同理
++a,先自增再执行语句,–同理
字符串连接符“+”,它会把其他的也变成String类型
//a=2,b=8
System.out.println("gy"+a+b);
//输出gy28
System.out.println(a+b+"");
//输出10
-
赋值运算符,=
-
关系运算符,>、<、>=、<=、==、!=、instanceof
-
逻辑运算符,&&、||、!
会有短路运算
-
位运算符,&、|、~、^、>>、<<、>>>(了解)
快速进行幂运算
/* A= 1000 0001; B= 1001 0101; A&B=1000 0001;//与 A|B=1001 0101;//或 A^B=0001 0100;//异或 ~A= 0111 1110;//取反 */
-
条件运算符,? :
条建判断?是,执行这句:否,执行这句
-
扩展赋值运算符,+=、-=、*=、/=
a+=b;——>a=a+b;(其他的类似)
注
有long和double的操作,输出为long、double类型
short和byte和int,操作后为int,(非自身的两两操作及以上操作)
很多操作我们会使用工具类,来进行操作
优先级(),多用括号
包机制
为了更好地组织类,java添加了包机制,用于区别类命名空间
一般用公司的域名倒置,用作包名——>com.xj-uygur.www
package,放在类的最上面,会自动加——>Ctrl+鼠标右键,查看
Alt+shift导包
定义包package,导包import
import com.xj-uygur.www.*(*为通配符,导入这个包的所有的类)
JavaDoc
- javadoc用来生成自己API的文档
- 参数信息
- @author作者名
- @version版本号
- @since指明需要使用的最早的jdk版本号
- @param指明参数名
- @return指明返回值情况
- @throws异常抛出情况
杂项
IDEA中复制当前行到下一行,Ctrl+D
看阿里巴巴开发手册