一、注释、标识符、关键字
注释
书写注释是一个很好的习惯
三种注释 注释快捷键 Ctrl + /
-
单行注释
// 单行注释 注释一行文字
-
多行注释
/* */ 注释一段文字
-
文档注释
-
//Java 文档注释 /** */ 可以添加参数 /** * @Description HelloWorld * @Author weiruiye */
平时写代码一定要注意规范
标识符
-
关键字
Java 所有组成部分都需要名字。类名、变量名以及方法名都被称为标识符
所有的标识符都以字母、($)、或者下划线(_) 开头 数字不能开头
首字母之后可以是任意字母,美元,下划线,或者数字的任何字符组合
- 不能使用关键字作为变量名或方法名
标识符是大小写敏感的(区分大小写)
可以使用中文命名,不建议中文,或者是拼音去命名 很捞
二、数据类型
数据类型
-
强类型语言
- 要求变量的使用严格符合规定、所有变量都必须先定义后才能使用
- 安全性高,速度慢
-
弱类型语言
- 变量可以不严格定义类型,很随意、
-
Java的数据分为两大类
-
** 基本类型**
-
数值类型:整数类型:byte(1个字节) short(2个字节) int(4个字节) long(8个字节)
浮点类型:float(4个字节) double(8个字节)
字符类型:char 占两个字节
-
boolean类型:占1位其值只有true 和 false 两个
-
引用类型
类、接口、数组
//整数 int num1 = 100; byte num2 = 20; short num3 = 30; long num4 = 40L; //long 类型要在数字后面加 L 区分 // 小数,浮点数 float num5 = 50.1F; //float 类型要在数字后面加 F 区分 double num6 = 3.1415826535432456524582; //字符 char name = 'a'; //字符代表一个字 //字符串,string 不是关键字、是类 String namea = "yeweirui"; //布尔值:是非 boolean flag = true; boolean flog = false;
-
什么是字节
-
位(bit): 是计算机 内部数据 储存的最小单位。 11001100是一个八位二进制数
-
字节(byte): 是计算机中 数据处理的基本单位,习惯上用大写B来表示
-
1B (byte,字节): = 8bit(位)
-
字符: 是指计算机中使用的字母、数字、字和符号
数据类型扩展 及面试题讲解
// 整数拓展 进制 二进制 0b 八进制 0 十进制 十六进制 0x
int i = 10;
int i1 = 010; //八进制 0
int i2 = 0x10; // 十六进制 0x 0~9 A~F
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println("====================================");
//-------------------//
//浮点数扩展? 银行业务怎么表示? 钱
//BigDecimal 数学工具类
// float 有限 离散 舍入误差 大约 接近但不等于
// double
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
float f = 0.1f; //0.1
double d = 1.0 / 10;
System.out.println(f == d); // false
float d1 = 12154154546446f;
float d2 = d1 + 1;
System.out.println(d1 == d2); // true
//===================================================
//字符拓展
//===================================================
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字节(16位) 0 ~ 65536 Excel 2*16 = 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); //false
String sc = "hello";
String sd = "hello";
System.out.println(sc == sd); //true
//对象 从内存分析
//布尔值扩展
boolean flag = true;
if (flag){}
//less is more !~
三、类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
由低到高排列
byte short char int long float double
-
运算中,不同类型的数据先转化为同一类型,然后进行运算
-
强制类型转化
-
自动类型转换
public class demo02 {
public static void main(String[] args) {
int i = 128;
byte b = (byte) i; //强制转换,内存溢出
double d = i; //自动转换 128.0
//强制转换 (类型) 变量名 高--低
//自动转换 低--高
/*
注意点:
1、不能对布尔值进行转换
2、不能把对象类型转换为不相干的类型
3、在把高容量转换到低容量的时候、强制转换
4、转换的时候可能存在内存溢出,或者精度问题
*/
System.out.println((int)23.5); //23
System.out.println((int)-40.54f); //-40
System.out.println("=========================");
char c = 'a';
int dd = c + 1;
System.out.println(c);
System.out.println((char)dd);
//操作比较大的数的时候,注意溢出问题
//JDK7新特性、数字之间是可以用下划线分割
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
int total = years * money; //-1474836480、计算的时候就溢出了
long total1 = money * years;//默认是int、所以在转换前就存在问题了
long total2 = money * (long)years;//先把一个数转换为long
System.out.println(total2);
// l 和 L 大小写 容易混淆,建议大写
}
}
四、变量、常量
- 变量是什么:就是可以变化的量~
- Java是一种强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value] [{,varName[=value]}];
// 数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量。
- 注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
- 类变量
- 实例变量
- 局部变量
public class demo_03 {
// 类变量 static
static double salary = 2500;
//属性:变量
//实例变量:从属于对象:如果不自行初始化,这个类型的默认值 0 0.0
//布尔值: 默认是false
//除了基本类型,其余都是null;
String name;
int age;
//main 方法
public static void main(String[] args) {
//局部变量: 必须声明和初始化值
int i = 10;
//变量类型 变量名字 = new demo_03();
demo_03 ex = new demo_03(); //快捷键 new demo_03.var + 回车
System.out.println(ex.age);
System.out.println(ex.name);
// 类变量 static
System.out.println(salary);
}
//其他方法
public void add() {
}
}
常量
- 常量:初始化后不能再改变值!不会变动的值。
- 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
final 常量名=值;
final double PI=3.14;
//修饰符 static,不存在先后顺序
static final double PI = 3.14;
- 常量一般使用大写字符
变量的命名规范
- 所有变量、方法、类名: 见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写 lastName
- 局部变量: 首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
五、运算符
Java 语言支持如下运算符:
-
算术运算符:+,-,*,/,%,++,–
-
赋值运算符: =
-
关系运算符 :> ,< ,>=, <=, ==,!=,instanceof
-
逻辑运算符: &&,||,!
-
位运算符&,|,^,~,>>,<<,>>>
-
条件运算符 ? :
-
拓展赋值运算符: +=,-=,*=,/=
a++ 先用a 再加一
++a 先加一 后用a
public static void main(String[] args) {
long a = 164556465465L;
int b = 132;
short c = 12;
byte d = 12;
System.out.println(getType(a+b+c+d));//long
System.out.println(getType(b+c+d));//Int
System.out.println(getType(c+d));//Int 自动升型 默认Int
//幂运算, 很多运算借助工具来操作~
double re = Math.pow(2,3);// 2的三次方
System.out.println(re);
}
逻辑运算符
//短路运算 &&前为加 后面的运行 ||前为真后面不运行
int c = 4;
boolean d = (c<4)&&(c++>5);
System.out.println(c);
System.out.println(d);
/*
位运算
A = 0011 1100
B = 0000 1101
-------------------------------------
A&B 0000 1100 都是1得1 否则都为0
A|B 0011 1101 有1得1 同0为0
A^B 0011 0001 异或,相同为0 不同为1
~B 1111 0010 取反
2*8 = 16 2*2*2*2
<< 左移 *2
>> 右移 /2
位运算操作效率极高
0000 0001 1
0000 0010 2
0000 1000 8
0001 0000 16 2
*/
System.out.println(2<<3); //得16
拓展运算符
int a = 10;
int b = 20;
a+=b; // a = a + b
a-=b; // a = a - b
System.out.println(a);
//字符串连接符 + , String 出现String类型,会将整个字符串转化为String 型
System.out.println("" + a + b); //1020 字符串在开头 字符形式输出
System.out.println(a + b + ""); //30 字符串在末尾 前面的 +号就会运算输出
条件运算符 优先级()
//三元运算符
// x ? y : z
//如果 x 为真 结果为 y ,否则为 z 好好学习?早日翻身 : 咸鱼一条
int score = 80;
String type = score<60 ? "不合格" : "合格";
System.out.println(type); //合格 掌握
六、包机制、JavaDoc
包机制
-
为了更好地组织类,Java 提供了包机制,用于区别类名的空间命名
-
包括包的语法格式为:
- package pkg1[. pkg2[. pkg3…]];
-
一般利用公司域名倒置作为包名
- idea 左上方小齿轮,compact middle package 取消勾选
-
为了能够使用某一个包成员,我们需要在Java 程序中明确导入该包。使用import 语句可以完成此功能
- import package…
JavaDoc
命令行 javadoc 参数 java 文件
- Javadoc 命令是用来生成自己API文档的
- 参数信息
/**
* @author 作者名
* @version 1.0
* @since 1.8
* @param //参数名
* @return //返回值
* @throws //异常抛出情况
*/
public class Doc {
String name;
/**
* @author weiye
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
Idea 方式生成Javadoc 方法参考连接~