注释
// 单行注释
/* 多行注释 */
/**
*@Descriotion
*@Auther
*/ JavaDoc 文档注释
/***
* .,, .,:;;iiiiiiiii;;:,,. .,,
* rGB##HS,.;iirrrrriiiiiiiiiirrrrri;,s&##MAS,
* r5s;:r3AH5iiiii;;;;;;;;;;;;;;;;iiirXHGSsiih1,
* .;i;;s91;;;;;;::::::::::::;;;;iS5;;;ii:
* :rsriii;;r::::::::::::::::::::::;;,;;iiirsi,
* .,iri;;::::;;;;;;::,,,,,,,,,,,,,..,,;;;;;;;;iiri,,.
* ,9BM&, .,:;;:,,,,,,,,,,,hXA8: ..,,,.
* ,;&@@#r:;;;;;::::,,. ,r,,,,,,,,,,iA@@@s,,:::;;;::,,. .;.
* :ih1iii;;;;;::::;;;;;;;:,,,,,,,,,,;i55r;;;;;;;;;iiirrrr,..
* .ir;;iiiiiiiiii;;;;::::::,,,,,,,:::::,,:;;;iiiiiiiiiiiiri
* iriiiiiiiiiiiiiiii;;;::::::::::::::::;;;iiiiiiiiiiiiiiiir;
* ,riii;;;;;;;;;;;;;:::::::::::::::::::::::;;;;;;;;;;;;;;iiir.
* iri;;;::::,,,,,,,,,,:::::::::::::::::::::::::,::,,::::;;iir:
* .rii;;::::,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,::::;;iri
* ,rii;;;::,,,,,,,,,,,,,:::::::::::,:::::,,,,,,,,,,,,,:::;;;iir.
* ,rii;;i::,,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,,::i;;iir.
* ,rii;;r::,,,,,,,,,,,,,:,:::::,:,:::::::,,,,,,,,,,,,,::;r;;iir.
* .rii;;rr,:,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,,,:,si;;iri
* ;rii;:1i,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,:,ss:;iir:
* .rii;;;5r,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sh:;;iri
* ;rii;:;51,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:hh:;;iir,
* irii;::hSr,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,sSs:;;iir:
* irii;;:iSSs:.,,,,,,,,,,,,,,,,,,,,,,,,,,,..:135;:;;iir:
* ;rii;;:,r535r:...,,,,,,,,,,,,,,,,,,..,;sS35i,;;iirr:
* :rrii;;:,;1S3Shs;:,............,:is533Ss:,;;;iiri,
* .;rrii;;;:,;rhS393S55hh11hh5S3393Shr:,:;;;iirr:
* .;rriii;;;::,:;is1h555555h1si;:,::;;;iirri:.
* .:irrrii;;;;;:::,,,,,,,,:::;;;;iiirrr;,
* .:irrrriiiiii;;;;;;;;iiiiiirrrr;,.
* .,:;iirrrrrrrrrrrrrrrrri;:.
* ..,:::;;;;:::,,.
*/
标识符
关键字[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oWFv1knO-1597234615771)(G:\Java_learn\笔记文件\java笔记\picture\image-20200616091409194.png)]
java 所有组成部分都需要名字。类名、变量名、方法名都被称为标识符。
标识符开头只能用字母、美元符号$、下划线开头。
数据类型
强类型语言:要求变量必须先定义在使用
java基本数据类型分为两大类
- 数值类型
- 整型 byte 1字节 short 2字节 int 4字节 long 8字节
- 浮点型 float 4字节 double 8字节
- 字符型 char 2字节(unicode编码下,每个字符都是两字节)
- 布尔类型 boolean 1位
- 类 接口 数组
定义long 变量数值后方要加L / l
定义float 变量数值后方要加F / f
java中直接输入整数则默认为int类型整数,带有小数点的实数默认为double类型,为了防止数值范围过小,需要在数值后方加字母
进制拓展
二 进制 0b
十 进制
八 进制 0
十六进制 0x
字符集拓展
- ASCII 码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间
- GB 2312 编码或 GBK 编码中,一个英文字母字符存储需要 1 个字节,一个汉字字符存储需要 2 个字节
- UTF-8 编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节
- Unicode 编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节
- UTF-16 编码中,一个英文字母字符或一个汉字字符存储都需要 2 个字节(Unicode 扩展区的一些汉字存储需要 4 个字节)
- UTF-32 编码中,世界上任何字符的存储都需要 4 个字节
浮点数误差
最好完全避免使用浮点数进行比较
也不要用浮点数进行金钱计算
可以使用数学工具类 BigDecimal
字符拓展
所有字符本质都是数字,采用Unicode编码
U0000 - UFFFF
char c2= '\u0061'
四
位
十
六
进
制
数
1
6
4
四位十六进制数16^4
四位十六进制数164
类型转换
-
大容量转换为小容量需要强制转换
-
小容量转换位大容量可以自动转换
-
可能会出现精度、内存溢出问题
-
不能对布尔类型进行转换
bool->byte->char、short->int->long->float->double
JDK7新特性,数字之间可以用下划线分割
int money = 10_000_000_000;
操作大数要注意溢出问题
int money = 10_000_000_000;
int year = 20 ;
long total=(long)money*year; //需要提前进行类型转换
public class demo02 {
public static void main(String[] args) {
short a=1;
byte b=2;
long c=12344554332232L;
System.out.println(a+b+c); //自动提升到最大的类型
System.out.println(a+b); //当到达不了int型时,自动提升到int型
}
}
变量类型作用域
public class demo02 {
static int allClicks = 0; //类变量
String str = "hello,world"; //实例变量
public void method() { //方法中放局部变量
int i = 0; //局部变量
}
}
方法体外,类体内声明的变量为成员变量(实例变量、类变量)
方法体内部声明的变量为局部变量
成员变量会默认进行初始化,布尔类型会初始化为false,char初始化为一个空格,其他基本数据类型初始化为0 / 0.0。引用类型初始化为null
实例变量:从属于对象
类变量:从属于类 ,static修饰
局部变量:(形参、方法局部变量、代码块局部变量)需要进行显式初始化
为何局部变量不能有访问修饰符
因为局部变量本身就是一种访问权限的设定
只能在局部调用,也就是说局部变量的生命周期在{}之中除了这个方法外界是没办法访问你这个变量,所以不需要用任何修饰符修饰。
常量
不可以改变的数值,常用大写字母做名字
final doubul PI = 3.14;
final为修饰符 ,修饰符的顺序不分前后
命名规范
- 类成员变量:首字母小写与驼峰命名法 lastName
- 局部变量:首字母小写与驼峰原则
- 常量:大写字母与下划线 MAX_VALUE
- 类名:首字母大写与驼峰原则
- 方法名:首字母小写与驼峰原则
Math类
java没有幂运算,所以可以借助Math类
double pows = Math.pow(2,3);
逻辑运算符
&&
||
!
位运算 & | ~ ^ 异或 >> << >>>
短路运算
a&&(b++)
当a为flase时,不会再执行b++
三元连接符
字符串连接符: +
当 + 两侧出现String类型时,会先将所有变量转换为字符串类型,在连接字符串
public class demo02 {
public static void main(String[] args) {
int a = 10;
int b = 10;
System.out.println("a+b= " + a + b);
System.out.println(a + b + "a+b= ");
}
}
输出: a+b= 1010
输出: 20a+b=
int score=90;
String scoreStatus=score<60? "不及格":"及格";
System.out.println(scoreStatus);
包级制
为了更好地组织类,java提供了包机制,用于区别类名的命名空间。
包类似于文件夹,让相同的文件名可以在不同文件夹内共存。
一般用公司域名倒置作为包名 com.baike.www
package com.baike.blog; //必须在最上方
导入包
import com.baike.www.demo02;
javaDoc
javadoc -encoding UTF-8 -charset UFT-8 demo01.java
字面量、常量、变量
int a; //a为变量
final int a; //a为常量
String str = "hello,World!"; //hello,World!为字面量