注释
1.单行注释
//单行注释
2.多行注释
/*多
行
注
释*/
3.文档注释(/**开头 */结尾 表示一种描述)
/**
* @Description Hello
* @Author me
*/
标识符
Java所有的组成部分都需要名字,类名、变量名以及方法名被称为标识符
- 所有的标识符都应该以字母(A-Z或a-z),美元符($),下划线(_)开头
- 首字母之后可以是字母(A-Z或a-z),美元符($),下划线(_)或数字的任何字符组合
- 类似#,%这种特殊符号,不要出现在变量命名中
- 不能用关键字作为变量名或方法名
- 标识符大小写敏感
- 可以使用中文名,但不建议
数据类型
强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用,安全性高,速度慢(例:java、c++)
弱类型语言
不要求变量的使用要严格符合规定(例:VB、JS)
Java的数据类型(2类)
-
基本类型(primitive type)(八大基本数据类型)
1.数值类型(占字节):
-
整数类型:
byte(1)
:-128~127
short(2)
:-32768~32767
int(4)
:-2147483648~2147483647
long(8)
:-9223372036854775808~9223372036854775807 -
浮点类型:
float(4)
,double(8)
-
字符类型:
char(2)
2.boolean类型(占1位):
true
,false
int num1 = 10; byte num2 = 127; short num3 = 30; long num4 = 3000000L; //long类型要在数字后面加个L float num5 = 50.1F; //float类型在数字后加F double num6 = 3.14159265358979; char name = 'A'; //String 不是关键字,是类 String namea = "张"; //判断是非 boolean flag1 = true; boolean flag2 = false;
-
-
引用类型(reference type)
类
、接口
、数组
小概念
- 位(bit):计算机内部数据存储的最小单位 例:10010011是八位二进制
- 字节(byte):计算机中数据处理的基本单位,习惯上用B表示
- 1B(byte)=8bit 1024B=1KB
- 字符:计算机中使用的字母、数字、字和符号
数据类型扩展
-
整数
进制:二进制0b,十进制,八进制0,十六进制0x
//整数拓展 int i1 = 10; int i2 = 010; //八进制 为8 int i3 = 0x10; //十六进制 为16
-
浮点数
银行业务怎么表示钱?
用BigDecimal 数学工具类
//浮点扩展 float f = 0.1f; double d = 1.0/10; System.out.println(f==d); //false System.out.println(f); System.out.println(d); float f1 = 21321321321321f; float f2 = f1 + 1; System.out.println(f1==f2); //true
float:表现字长有限、离散,存在舍入误差,结果为大约数、接近但不等于
最好完全避免使用浮点数进行比较
-
字符
所有的字符本质上还是数字
//字符拓展 char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1); //强制转型 97 System.out.println(c2); System.out.println((int)c2); //强制转型 20013
- 编码:Unicode表(占2个字节):例:97 = a 0~65535
char c3 = '\u0061'; //Unicode编码表示方式 System.out.println(c3); //a
-
转义字符:
\t
、\n
等 -
String sa = new String("hello world"); String sb = new String("hello world"); System.out.println(sa==sb); //false String sc = "hello world"; String sd = "hello world"; System.out.println(sc==sd); //true //对象 从内存分析 //==在对比变量时 是对比值 ;对比引用类型时 是对比地址值 ;new是创建一个新的地址 所以不同 // String存在常量池中,两个标识符指向同一地址 所以相同
-
布尔值
boolean flag = true; if(flag){} //代码要精简易读
类型转换
-
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
-
运算中不同类型数据转化为同一类型
由低到高:byte、short、char < int < long < float <double
低到高:强制类型转换
int i = 127; byte b = (byte)i; //(类型)变量名
高到低:自动类型转换
int i = 127; double d = i; char c = 'a'; int d1 = c + 1; //高到低 System.out.println(d1); //98 System.out.println((char)d1); //b低到高
-
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量时,强制转换
4.转换时可能存在内存溢出,或精度问题
//溢出问题 int i1 = 128; byte b1 = (byte)i; //-128 //精度问题 System.out.println((int)23.7); //23 System.out.println((int)-45.62f); //45
-
操作比较大的数的时候,注意溢出问题
DK7新特性,数字之间可以用下划线_分割
int money = 10_0000_0000; //1000000000 int years = 20; int total = money * years; System.out.println(total); //-1474836480,计算的时候溢出了 long total2 = money * years; //默认是int,转换之前已经存在问题了 int转long 要强制转换 System.out.println(total2); long total3 = money * (long)years; //先把一个数转换为long System.out.println(total3);
变量
-
java时一种强类型语言,每个变量都必须声明其类型
-
java变量时程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
数据类型 变量名 = 值;
-
注意点:
- 每个变量都有类型,可以是基本类型,也可以是引用类型。
- 变量名必须是合法标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
-
变量作用域:类变量、实例变量、局部变量
public class Type { //类变量 static static double salary = 2500; //属性:变量 //实例变量:从属于对象,如果不进行初始化,值为这个类型的默认值 0 0.0 //布尔值:默认是false //除了基本类型,其余的默认值都是null String name; //默认为null int age; //默认为0 //作用域高 static {} //main方法 public static void main(String[] args) { //局部变量:必须声明和初始化 int i = 10; System.out.println(i); Ttpe demo01 = new Type(); System.out.println(demo01.name); //null System.out.println(demo01.age); //0 //类变量 static System.out.println(salary); } //其他方法 public void add() {} }
常量
常量是初始化后不能再改变值,不会变动的值
常量名一般使用大写字符
final 常量名 = 值;
public class Demo06 {
//static和final是修饰符 不存在先后顺序
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除第一个单词 后面单词首字母大写
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
运算符
-
算数运算符:
+
、-
、*
、/
、%
、++
、--
-
赋值运算符:
=
-
关系运算符:
>
、<
、>=
、<=
、==
、!=
、instanceof
-
逻辑运算符:
&&
、||
、!(非)
-
位运算符(了解即可):
&
,|
,^
,~
,>>
,<<
,>>>
-
条件运算符:
? :
-
扩展赋值运算符:
+=
、-=
、*=
、/=
(例:a+=b 是 a=a+b)
两个数之间运算就是二元运算符
-
几个数做运算 如果有Long类型,运算结果也为Long型 如果有double类型,运算结果为double 如果没有,运算结果为int
public static void main(String[] args) { long a = 123456789L; int b = 123; short c = 10; byte d = 8; System.out.println(a+b+c+d); //Long System.out.println((double)b+c+d); //double System.out.println(c+d); //int }
关系运算符返回的结果为布尔值
-
自增自减运算:
b=++a 先自增,再给b赋值
b=a++ 先给b赋值,再自增
-
使用一些工具类来操作
//幂运算 2^3 2 * 2 * 2 = 8 double pow = Math.pow(2,3); System.out.println(pow);
位运算符
A = 0011 1100 B = 0000 1101
A & B = 0000 1100 按位与运算
A | B = 0011 1101 按位或运算
A ^ B = 0011 0001 按位异或运算:相同为0,不同为1
~B = 1111 0010 全部取反运算
<< 左移一位 (*2) >> 右移一位 (/2)
怎么算最快:2 * 8 = 16 ----- 2 * 2 * 2 * 2
System.out.println(2 << 3); //16
字符串连接符
//字符串连接符 +
System.out.println(a + b); //30
System.out.println("" + a + b); //1020
System.out.println(a + b + ""); //30
三元运算符(? :)
x?y:z (如果x为true,则结果为y,否则为z)
int score = 80;
String type = score < 60 ? "不及格" : "及格"; //必须掌握
System.out.println(type); //及格
包机制
-
包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]];
-
一般利用公司域名倒置作为包名;
包里的名字尽量不要重复
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能
import package1[.package2...].(classname|*);
-
import放在package下面
-
*是通配符 可以导入这个包下所有的类
JavaDoc
-
JavaDoc命令是用来生成自己API文档的
-
参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
-
加在类上就是类注释,加在方法上就是方法注释
package base; /** * @author z * @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; } }
-
命令行:
javadoc -encoding UTF-8 -charset UTF-8 文件名.java
index.html即为生成文档
用IDEA生成JavaDoc文档
- 生成后自动打开文件,之后可去对应文件夹找到生成的文件
注:
3号:传入JavaDoc的参数
-encoding UTF-8 -charset UTF-8 -windowtitle “文档HTML页面标签的标题” -link http://docs.Oracle.com/javase/7/docs/api