Java基础语法
注释
-
单行注释
//单行注释
-
多行注释
/* 多行注释 */
-
文档注释
/** *文档注释,/**开头,* /结束,每行得加* *@Description Hello World *@Author GuYUe */
-
有趣的代码注释
/*** * .,, .,:;;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;:. * ..,:::;;;;:::,,. */
标识符
关键字
-
访问控制
关键字 意思 private 私有的 protected 受保护的 public 公共的 -
类、方法和变量修饰符
关键字 意思 abstract 声明抽象 class 类 extends 扩允,继承 final 终极,不可改变的 implements 实现 interface 接口 native 本地 new 新,创建 static 静态 strictfp 严格,精准 synchronized 线程,同步 transient 短暂 volatile 易失 -
程序控制语句
关键字 意思 break 跳出循环 continue 继续 return 返回 do 运行 while 循环 if 如果 else 反之 for 循环 instance of 实例 switch 开关 case 返回开关里的结果 default 默认 -
错误处理
关键字 意思 catch 处理异常 finally 有没有异常都执行 throw 抛出一个异常对象 throws 声明一个异常可能被抛出 try 捕获异常 -
包相关
关键字 意思 import 引入 package 包 -
基本类型
关键字 意思 boolean 布尔型 byte 字节型 char 字符型 double 双精度 float 浮点 int 整型 long 长整型 short 短整型 null 空 true 真 false 假 -
变量引用
关键字 意思 super 父类,超类 this 本类 void 无返回值
标识符注意点
-
标识符应以大小写字母(A-Z,a-z),美元($),下划线(_)开始。
-
首字母之后可以是任意字母,数字的任何字符组合。
-
不能以关键字命名
-
大小写敏感
-
中文可以用,但不建议
数据类型
Java是一种强类型语言,所有变量都得先定义后使用。
基本类型
-
整数:byte占1个字节范围:-128-127;
一个字节,8位,最大是二进制11111111,表示成10进制是2e8=256,分正负,-128-127
short占2个字节范围:-32768-32767,
int占4个字节范围:-2147483648-2147483647,±21亿
long占8个字节范围:-9223372036854775808-9223372036854775807
long一般在数字后加L,表示L类型
-
浮点:float占4个字节,1.4e-045〜3.4e + 038
double占8个字节,4.9e-324〜1.8e + 308
-
字符:char占两个字节,字符用单引号,一个汉字也是一个字符
字符串:String,String不是关键字,是一个类,字符串用双引号
-
布尔类型:占一位,值只有true\false
字节
-
位bit:是计算机内部数据储存的最小单位,11001100是—个八位二进制数
-
字节byte:是计算机中数据处理的基本单位,习惯上用大写B来表示,1B=8bit
-
字符:是指计算机中使用的字母、数字、字和符号
-
-
拓展
- 进制、精度
public class Demo3 { public static void main(String[] args) { int i1 = 10; int i2 = 010;//八进制以0开头,8 int i3 = 0x10;//十六进制以ox开头,16 System.out.println(i1); System.out.println(i2); System.out.println(i3); float f = 0.1f; double d = 1.0/10; System.out.println(f==d); System.out.println(f); System.out.println(d); // float d1 = 22323232323232f; float d2 = d1+1; System.out.println(d1); System.out.println(d2); System.out.println(d1==d2); //银行业务少用浮点数进行比较; } }
- 转义字符
\t 制表符
\n 换行
System.out.println("Hello\tWorld"); System.out.println("Hello\nWorld");
其他常用转义符如下:
- 布尔值
flag = true if(flag=true){} if(flag){} //两者作用相同
引用类型
- 类
- 接口
- 数组
类型转换
类型级别
低级可以自动转换成高级
![](https://img-blog.csdnimg.cn/1d38cf2c404746c18bf806617bd3d8f8.png)
强制转换
高级转换成低级:变量前加(类型),内存溢出会循环
public class Demo5 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i; //内存溢出,循环
System.out.println(b);
System.out.println(i);
}
}
//b=-128
- 不能转换转换布尔值
- 类型要相干
- 大容量到低容量要强制转换
- 转换可能存在内存溢出或精度问题
char c = 'a';
int d = c+1;
System.out.println(d);//98
System.out.println((char) d);//b
public class Demo6 {
public static void main(String[] args) {
int money = 10_0000_0000;//JDK7以后数字见可用_分割,且不会输出
int year = 20;
int total1 = money*year;//int类型超过21亿溢出
System.out.println(total1);
long total2 = money* year;
System.out.println(total2);//乘法运算时已经出问题,再转换没用
long total3 = money*(long)year;
System.out.println(total3);//把其中一个转换成long
}
}
变量、常量
每个变量都必须声明类型
变量的作用域
-
类变量 定义在class下面,static开头,可以在方法内直接调用
static int a = 0;
-
实例变量 定义在class下面,不必初始化,默认值0 0.0 布尔值默认false,除了基本类型其他都是null。方法内调用得先new一个对象。
String str = "hello";
-
局部变量 方法内部,其他方法不能调用
public class Demo8 {
//类变量 static
static double salary = 2500;
//属性:变量
//实例变量:从属于对象:不必初始化,默认值0 0.0 布尔值默认false,
//除了基本类型其他都是null。
String name;
int age;
//main方法
public static void main(String[] args){
//局部变量:不许声明和初始化值,只在本方法内可用
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new Demo8()
Demo8 demo8 = new Demo8();
System.out.println(demo8.age);
System.out.println(demo8.name);
System.out.println(salary);
}
//其他方法
public void add(){
}
}
常量
初始化之后就不能再改
final 常量名=值
常量名一般用大写字符
final double PI = 3.141592653;
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则: monthSalary,除了第一个单词外,后边单词首字母大写。lastname->lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线: MAX_VALUE
- 类名:首字母大写和驼峰原则:Man, GoodMan //规范
- 方法名:首字母小写和驼峰原则:run(), runRun()
运算符
Java支持的运算符
- 算数运算:+ - * / %(模运算,即取余) ++ –
- 赋值运算:=
- 关系运算:> < >= <= ==(等于) !=(不等于) instanceof
- 逻辑运算:&& || ! 与或非
- 位运算:& | ~ ^ >> << >>>
- 条件运算:? :
- 扩展赋值运算:+= -= *= /=
package Operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a = 10;//快捷键CTRL+D复制当前行到下一行
int b = 20;
int c = 30;
int d = 30;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b); //int
System.out.println((double)a/b);
}
}
package Operator;
public class Demo02 {
public static void main(String[] args) {
long a = 123123123123L;
int b = 123;
short c = 32767;
byte d = 127;
System.out.println(a+b+c+d);//Long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
//有一个是Long,全是long,否则全是int。
}
}
package Operator;
public class Demo03 {
public static void main(String[] args) {
//大于小于返回结果是布尔值,true/false
int a = 10;
int b = 20;
int c = 21;
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
System.out.println(c%a); //取模=1
}
}
自增自减(++ --)
-
a++ 相当于隐藏语句a=a+1 在a++所在语句执行后执行 b=a++//先赋值,再自增
-
++a 相当于隐藏语句a=a+1 在++a所在语句执行前执行 b=++a//先自增,再赋值
-
– 用法类似
幂运算
数学计算类库 Math
Math.pow
package Operator;
public class Dmeo04 {
public static void main(String[] args) {
//自增自减
int a = 3;
int b = a++;//a = 3, b=3;
//a=a+1;隐藏
System.out.println(a);//a=4;
System.out.println(b);//b=3;
//a=a+1;
int c = ++a; //a=5,c=5;
System.out.println(c);
int d = a--;//d=5
System.out.println(d);//a=4
int e = --a;//a=3,e=3;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
//幂运算
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
逻辑运算
与&&,两个都为T,则为T;
或||,一个为T,则为T;
非!,T变为F。
短路运算
与运算a&&b,若a为false,则b直接跳过,程序返回false。
package Operator;
//逻辑运算符 与或非 交并补
public class Demo05 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a && b));
System.out.println("a || b:"+(a || b));
System.out.println("!(a && b):"+!(a && b));
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
}
}
位运算
//每位进行与或非
A = 0011 1100
B = 0000 1101
A&B=0000 1100
A|B=0011 1101
A^B=0011 0001 //异或,相同为0,不同为1
~B=1111 0010
//2*8怎么计算最快 分解为2*2*2
//左移右移
// << >>
package Operator;
public class Demo06 {
public static void main(String[] args) {
System.out.println(2<<3);//16
/*
2 写成8位二进制
2 = 0000 0010 1左移一位,数字变成2倍
2<<3位变大2^3倍
效率极高
*/
}
}
扩展赋值
// a+=b,a=a+b
字符串连接符
“+” 加号两侧出现String类型,会自动把其他类型变成String
空字符串在前,先变成字符串再连接,空字符串在后,先计算再变成字符串连接
package Operator;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;//a=a+b;
System.out.println(a);//30
//a=30;b=20;
System.out.println(""+a+b);//3020
System.out.println(a+b+"");//50
}
}
条件运算符
x ? y : z
若x位true,则值为y,否则为z。
package Operator;
public class Demo08 {
public static void main(String[] args) {
//条件运算符
int y = 1;
int z = 2;
boolean x = true;
System.out.package Operator;
public class Demo08 {
public static void main(String[] args) {
//条件运算符
int score = 85;
String type = score > 60 ? "合格" : "不合格";
System.out.println(type);//合格
}
}
包机制
包的本质就是一个文件夹。
一般用公司域名倒置作为包名 如www.baidu.com com.baidu.www
导包:import import com.guyuer.Base.Demo2;导入Base下的Demo2类。 import com.guyuer.Base.*; 导入Base包下所有的类。
JavaDoc
生成API文档
package com.guyuer.Base;
/**
* @Author GuYuer
* Version 1.0
* Since 1.8
*/
public class Doc {
String name;
/**
*
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
在cmd中操作
在类所在位置打开cmd命令窗口
输入javadoc -encoding UTF-8 -charset UTF-8 Doc.java //-encoding 和 -charset设置是防止中文乱码
在文档目录会生产html文件,打开index.html
![]()