JAVA基础理论
注释、标识符、关键字
1. Java的三种注释
-
单行注释 // 注释一行文字
-
多行注释 /* 注释一段文字 */
-
文档注释 /** 可以读取的注释 */ /** 特殊多行注释 */ 书写注释是个非常好的习惯 养成标准的注释习惯
2. 标识符、关键字
标识符 + 名字 = 赋予的值
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
abstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
// Java 所有的组成部分都需要名字。类名、变量名以及方法名都被成为标识
-
所有标识符都应该为字母(A-Z或者a-z) 美元符($) 下划线(_)开始
-
首字符之后可以是字母(A-Z或者a-z)美元符($)下划线(_)或数字的任何字符组合
-
不能使用关键字作为变量名或方法名
-
标识符大小写敏感的
-
合法标识举例:age Ssalary _value __1_value
-
非法标识举例:1name /name #name
数据类型
1. 强类型语言
-
要求变量的使用要严格符合规定 所有变量都必须先定义后才能被使用
安全性高 速度较慢
2. 弱类型语言
3. Java数据类型
基本数据类型
数值类型
1. 整数类型
-
byte 占1个字节范围:-128 - 127
-
short 占2个字节范围:-32768 - 32767
-
int占 4个字节范围:-2147483648 - 2147483647
-
long 占8个字节范围:-9223372036854775808 - 9223372036854775807
2. 浮点类型
-
float 占4个字节
// float 的数值后面要加大写F
-
double 占8个字节
3. 字符类型
-
char 占2个字符
// boolean类型 占1位其值只有 true 和 False 两个
public class Demo02 {
public static void main(String[] args) {
//八大数据类型
byte a = 10;
short b = 20;
int c = 30;
long d = 40L;
// long的数值后面加大写L
//小数 浮点数
float e = 2.1F;// float的数值后面要加大写F
double f = 3.1415926;
//字符
char g = ‘丘‘;
//string name = "丘山";
//string 不是关键字 是‘类’
//布尔值 是非
boolean h = true;
String K = "qiushan";
int now = 100;
System.out.println(a);
System.out.println(now);
}
}
引用数据类型
// 不是基本数据类型的都是 引用数据类型
类型转换
低 ====================================高
byte , short , char => int => long => float => double
强制转换 (类型)变量名 高 -- 低
-
不能对布尔值进行转换
-
不能把对象转换为不相干的类型
-
把高容量的转换为低容量的时候,强制转换反之自动转换
-
转换的时候可能存在内存溢出,或者精度问题
自动转换 低 -- 高
public class Demo04 {
public static void main(String[] args) {
int a = 128;
double b = a;
System.out.println(a);
System.out.println(b);
/*
不能对布尔值进行转换
不能把对象转换为不相干的类型
把高容量的转换为低容量的时候,强制转换反之自动转换
转换的时候可能存在内存溢出,或者精度问题
*/
System.out.println("===========================");
System.out.println((int)23.75); // 23
System.out.println((int)-28.45); // -28
System.out.println("=======================");
char q = ‘A‘;
int w = q + 1;
System.out.println((int)q);
System.out.println(w);
System.out.println((char)w);
?
System.out.println("=======================");
//跨度比较大的时候 注意溢出问题
//数字之间可以用下划线
int money = 1_000_000_000;
int years = 20;
System.out.println(money * (long)years);
}
}
变量
-
变量是什么:就是可以变化的量!
-
Java是一种强类型语言,每个变量都必须生命其类型
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [ = value ] [{,varname[ = value ]}];
//数据类型 变量名 = 值:可以使用逗号隔开声明多个同类型变量。
注意事项
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法的标识符
-
变量声明是一条完整的语句,因此每一个声明都必须分号结束
-
变量的作用域
-
类变量
public class Demo06 {
//类变量 static
static double salary =2500;
public static void main(String[] args) {
//类变量 static
System.out.println(salary);
}
}
-
实例变量
public class Demo06 {
String name;
int age;
public static void main(String[] args) {
//变量类型 变量名称 = new Demo06()
Demo06 demo06 = new Demo06();
System.out.println(demo06.name);
System.out.println(demo06.age);
}
}
-
局部变量
public class Demo06 {
public static void main(String[] args) {
//局部变量 必须声明初始化值
int i = 10;
System.out.println(i);
}
}
常量
-
常量:初始化后不能改变值!不回变动的值
-
所谓常量可以理解成一种特殊变量,它的值被设定后,在程序运行过程中不允许被改变
final 常量名 = 值;
final double PI = 3.14;
-
常量名一般使用大写字符
public class Demo07 {
//修饰符不存在先后顺序
static final double PI = 3.14;
?
public static void main(String[] args) {
System.out.println(PI);
}
}
变量的命名规范
-
所有变量、方法、类名:见明如意
-
类成员变量:首字母小写和托福原理:monthSalary
//除了第一个单词以外首字母大写 lastName
-
局部变量:首字母小写和驼峰原理
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原理:Man,GoodMan
-
方法名:首字母小写和驼峰原理:run(),runRUN()
运算符
名称 | 运算符 |
---|---|
算术运算符 | +,-,*,/,%,++,-- |
赋值运算符 | = |
关系运算符 | >,<,<==,>==,==,!=,instanceof |
逻辑运算符 | &&,||,! |
位运算符 | &,|,^,~,>>,<<,>>> |
条件运算符 | ?,: |
扩展赋值运算符 | +=,-=,*=,/= |
算数运算符
public class Demo02 {
public static void main(String[] args) {
//++ -- 自增,自减,一元运算符
int a = 3;
int b = a++;//执行完这行代码后先给b赋值再自增
//a = a + 1
int c = ++a;//执行完这行代码后先给c赋值再自增
//a = a + 1
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3 2*2*2 = 8 很多运算会是使用工具类
double pow = Math.pow(2,4);
System.out.println(pow);
}
}
逻辑运算符
public class Demo03 {
public static void main(String[] args) {
// 与 (and) 或 (or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a&&b:"+(a&&b)); //逻辑与运算 两者都为真,结果才为true
System.out.println("a||b:"+(a||b));//逻辑或运算 两者有一个为真,则结果为true
System.out.println("!(a&&b):"+!(a&&b));//如果为真则为假,如果为假则为真
//短路运算测试
int c = 5;
boolean d = (c<4)&&(c++<4);//先后运算 前者为false 后者不进行运算
System.out.println(d);
System.out.println(c);
}
}
位运算符
package operator;
?
public class Demo04 {
public static void main(String[] args) {
//位运算符
/*
A = 1100 1100
B = 0000 1101
A&B 0000 1101
A|B 1100 1101
A^B 1100 0001
~B 1111 0010
效率巨高
2*8 2*2*2*2
<< *2
>> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);//16
}
}
三元运算符
public class Demo06 {
public static void main(String[] args) {
// x ? y : z
//如果x==true,则结果为y,否则结果为z
?
int score = 80;
String type = score <60 ?"不及格":"及格";
// if
System.out.println(type);
}
}
运算优先级
-
()
-
!
~
++
--
-
*
/
%
-
+
-
-
<<
>>
>>>
-
&
-
|
-
+=
-=
*=
/=
字符连接符
public class Demo05 {
public static void main(String[] args) {
int a = 10;
int b = 20;
?
a += b;//a = a+b
a -= b;//a = a-b
System.out.println(a);
?
//字符串连接符 + string
System.out.println(""+a+b);//""号后面的字符串连接
System.out.println(a+b+"");//“”前面的正常运算
?
String s1 = "Hello";
String s2 = "world";
String s = s1 + " " + s2 + "!";
System.out.println(s);//""加在中间连接字符串
}
}
包机制
-
包的本质就是文件夹
-
为了更好地组织类,Jva提供了包机制,用于区别类型的命名空间
-
包语句的语法格式为
package pkg1[.pkg[.pkg3...]];
-
一般利用公司域名倒置作为包名
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能
import package1.[.package2...].(classname|*);
-
JavaDoc
-
Javadoc命令是用来生成自己API文档的
-
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的jdk版本
-
param 参数名
-
return 返回值情况
-
throws 异常抛出情况
-
将java编译成文档 javadoc -encoding UTF-8 charset UTF-8 doc.java