注释
Java中的注释有三种 :
- 单行注释
//单行注释
- 多行注释
/*
多行注释
*/
- 文档注释
//java Doc:文档注释,是有功能性的,在后面的swagger可以用到
/**
* @author
* @参数
* ...
*/
标识符和关键字
关键字:
定义:Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
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中所有的组成部分都需要名字,类名、变量名以及方法名都被称为标识符。
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
boolean | 基本数据类型之一,声明布尔类型的关键字 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 声明一个类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
- 标识符注意点
-
所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
-
- 首字符之后可以是字母(A-Z或者a-z),美元符($)、或者下划线(_)或者数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary、#abc
数据类型讲解
- 数据类型
- 强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 弱类型语言
- Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
- 强类型语言
- 什么是字节
- 位(bit):是计算机最小的存储单位,11001100是一个八位二进制数。
- 字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示,
- 1B(byte,字节) = 8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
- 1bit 表示1位
- 1Byte表示一个字节1B=8b。
- 1024B=1KB
- 1024KB=1M
- 1024M=1G
数据类型扩展及面试题讲解
public class Demo02 {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;//八进制0
int i3 = 0x10;//十六进制0x A~F
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("=========================");
//浮点数拓展? 银行业务怎么表示? 钱
// BigDecimal 数学工具类
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全使用浮点数进行比较
//最好完全使用浮点数进行比较
//最好完全使用浮点数进行比较
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
// 判断float与double是否相等
System.out.println("判断float与double是否相等 " +
"float f = 0.1f; //0.1\n" +
"double d = 1.0/10; //0.1" +
":");
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
float d1 = 231313123164658222f;
float d2 = d1 + 1;
// 浮点数的有限验证
System.out.println(d1==d2);
System.out.println("====================");
//字符拓展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int) c1);
System.out.println(c2);
System.out.println((int)c2);
//所有的字符本质还是数字
//编码 Unicode 表:(97=a 65=A) 2字节 0 - 65536
//U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3); //a
//转义字符
// \t
// \n
System.out.println("hello \tworld");
System.out.println("===============");
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa == sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
//对象 从内存分析
//布尔值扩展
boolean flag = true;
if (flag == true){ } //新手
if (flag){} //老手
}
}
类型转换
public class Demo03 {
public static void main(String[] args) {
int i = 130;
byte b = (byte)i; //内存溢出,byte最大值只有127
//强制转换 (类名)变量名 高——》低
//自动转换 低——》高
System.out.println(i);
System.out.println(b);
/*
注意点
1.不能对布尔值转换
2. 不能把对象转换为不相干的类型
3.在把高容量转换为低容量的时候,强制转化
4.转换的时候可能存在内存溢出,或者精度问题!
*/
System.out.println("====================");
System.out.println((int)23.47); //23
System.out.println((int)-45.89f); //-45
System.out.println("==========字符与Unicode码===========");
char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char) d);
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;//-1474836480,计算的时候溢出了
long total2 = money*years;//默认是int,转换之前已经存在问题了
long total3 = money*((long)years);
System.out.println(total);
System.out.println(total3);
}
}
变量、常量、作用域
- 变量就是可以变化的量!
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
public class Demo05 {
public static void main(String[] args) {
//int a=1,b=2,c=3; 可读性差 //注意程序的可读性
String name = "lidongyang";
char x = 'X';
double pi = 3.14;
}
}
-
变量的作用域
- 类变量
- 实例变量
- 局部变量
public class Demo06 { //类变量 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); Demo06 demo06= new Demo06(); System.out.println(demo06.age); System.out.println(demo06.name); //类变量 static System.out.println(salary); } }
-
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
- final 常量名 = 值;
- 常量名一般使用大写字符。
-
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首写字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线
- 类名:首字母大写和驼峰原则
- 方法吗:首字母小写和驼峰原则
基础运算符
Java语言支持如下运算符: 优先级()、
- 算术运算符:+,-,*,/,%,++,–
- 赋值运算符=
- 关系运算符:>,<,>=,<=,==,!=instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
- 条件运算符?:
- 扩展赋值运算符:+=,-=,*=,/=
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//Ctrl + D :复制当前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a+b);
System.out.println(a/(double)b);
}
}
自增自减运算符、初识Math类
public class Demo03 {
public static void main(String[] args) {
// ++ -- 自增,自减 一元运算
int a=3;
int b=a++; //a++ a=a+1 ;执行完这行代码后,先给b赋值,再自增
System.out.println(a);
int c=++a; //++a a=a+1 ;执行完这行代码前,先给b赋值,再自增
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3 2*2*2 = 8
//很多运算,我们会使用一些工具类来操作!
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
三元运算符及小结
//三元运算符
public class Demo07 {
public static void main(String[] args) {
// x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 89;
String type = score < 60 ? "不及格" : "及格";//必须掌握
System.out.println(type);
}
}
包机制\JavaDoc生成文档
-
包机制
- 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
- 包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]]
- 一般利用公司域名倒置作为包名
- 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用”import“语句可完成此功能
import package1[.package2...].(classname|*);
-
JavaDoc
- JavaDoc命令是用来生成自己API文档的
- 参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的JDK版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况