Java基础
一. 注释
- 单行注释
- 多行注释
- 文档注释
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
//输出 ----单行注释
/*
多行注释
*/
//文档注释
/**
* @Author
*/
}
}
二. 标识符
定义
类名、变量名、方法名都被称为标识符
注意点
- 所有标识符都以字母、美元符、下划线开始
- 不能使用关键字作为变量名、或方法名
- 大小写敏感
三.数据类型
- 强类型语言:要求变量的使用要严格符合规定,所有的变量都必须先定义后才能使用(安全性高、速度慢)
- 弱类型语言
数据类型
- 基本类型(primitive type)
- 数值类型
- 整数类型
- byte 占1个字节 范围:-128-127
- Short 占2个字节 范围:-32768-32767
- Int 占4个字节 范围:-214783648-214783647
- Long 占8个字节
- 浮点类型
- float 占4个字节
- double 占8个字节
- 字符类型
- Char 占2个字节
- 整数类型
- Boolean 类型 占1位
- 数值类型
- 引用类型(reference type)
- 类
- 接口
- 数组
什么是字节
- 位(bit):是计算机中 内部数据储存的最小单位,11001100是一个八位的二进制数
- 字节(byte):是计算机中 数据处理的基本单位,习惯上用大写B来表示
- 1B(字节) = 8 bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
- 1bit = 1位
- 1byte= 8b
- 1024B = 1KB
- 1024KB = 1M
- 1024M = 1G
拓展
public class Demo01 {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010; //8进制
int i3 = 0x10; //16进制 0-9 A-F 16
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("-------");
//浮点数拓展:银行业务怎么表示钱? - > Bigdecimal 类
//float 字长有限 离散 舍入误差 大约 接近但不等于 最好完全使用浮点数进行比较
//double
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
float d1 = 23131312312312313f;
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字节 65536 Excel 2^16=65536
//U0000 - UFFFF
char c3 = '\u0061';
System.out.println(c3);
//转义字符
//\t 制表符
//\n 换行
System.out.println("Hello\tWorld");
System.out.println("-------");
//对象 - 内存分析
String sa = new String("hi");
String sb = new String("hi");
System.out.println(sa == sb);
String sc = "hi";
String sd = "hi";
System.out.println(sc == sd);
//布尔值拓展
boolean flag = true;
if(flag == true){ }
if(flag){}
}
}
结果:
10
8
16
-------
false
0.1
0.1
true
-------
a
97
中
20013
a
Hello World
-------
false
true
- char 在Java 中是和 Unicode编码 形成一一对应的映射来存储的,而采取的编码方式则为 UTF-16
ASCII码
在计算机种中,1 字节对应 8 位二进制数,而每位二进制数有 0、1 两种状态,因此 1 字节可以组合出 256 种状态。如果这 256 中状态每一个都对应一个符号,就能通过 1 字节的数据表示 256 个字符。美国人于是就制定了一套编码(其实就是个字典),描述英语中的字符和这 8 位二进制数的对应关系,这被称为 ASCII 码。
ASCII 码一共定义了 128 个字符,例如大写的字母 A 是 65(这是十进制数,对应二进制是0100 0001)。这 128 个字符只使用了 8 位二进制数中的后面 7 位,最前面的一位统一规定为 0。
四.类型转换
转换说明
- 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低----------------------------------->高
byte, short,char - >int ->long ->float - > double (小数优先级大于整数) - 运行中,不同类型的数据显转换为同一类型,在进行运算
- 强制类型转换
- 自动类型转换
/*
类型转换
*/
public class Demo02 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i; //byte8位127,128会导致内存溢出
//强制转换(类型)变量名 高- 低
System.out.println(i);
System.out.println(b);
/*
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型 转换为 不想干的类型
3.高容量 转换为 低容量,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!
*/
//精度问题
System.out.println("------------------");
System.out.println((int)23.7);
System.out.println((int)-45.89f);
//自动转换 低 - 高
System.out.println("------------------");
char c = 'a';
int d = c +1;
System.out.println(d);
System.out.println((char)d);
}
}
结果集:
128
-128
------------------
23
-45
------------------
98
b
常见问题
计算时若知道会出现内存溢出,则先进行转换,再进行计算
private static void usualproblem() {
System.out.println("===============常见问题=================");
//操作比较大的数时,注意溢出问题
//JDK7新特性:数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int sum = money * years;
System.out.println(sum); //计算溢出了
long sum2 = money * years;
System.out.println(sum2); //默认是int,转换long前已经有问题了
long sum3 = money *((long)years); //先把一个数转换为long
System.out.println(sum3);
//L l 大小写敏感
}
结果集:
===============常见问题=================
-1474836480
-1474836480
20000000000
五.变量、常量
变量定义
- 定义:可以变化的量
- Java是一种强类型语言,每个变量必须先声明其类型
- Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型、作用域
Type verName = value,verName=value;
//数据类型 变量 = 值;可以使用逗号隔开声明多个同类型变量
注意事项
- 每个变量都有类型,可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明必须以分号结束
作用域
- 类变量
- 实例变量
- 局部变量
public class Demo03 {
//类变量
static double salary = 10;
//实例变量:从属于对象;如果不初始化,默认值 0、0.0 布尔值默认是false
//除了基本类型,其余默认值都是null
String name;
int age;
//主方法
public static void main(String[] args) {
//局部变量:必须声明和初始化
int i =10;
System.out.println(i);
//变量类型 变量名 = new 变量类型();
Demo03 demo03 = new Demo03();
System.out.println(demo03.name);
System.out.println(salary);
}
}
结果:
10
null
10.0
常量定义
- 常量(Constant):初始化后不能再改变的值!不会变动的值
- 所谓常量可以理解为一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变
final 常量名 = 值
final double PI = 3.14
- 常量名一般使用大写字符
变量命名规范
- 所有变量、方法、类名:见名之意
- 类成员变量:首字母小写和驼峰原则(除了第一个单词以外,后面的单词首字母大写)
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线
- 类名:首字母大写和驼峰原则
- 方法名:首字母小写和驼峰原则
六.基本运算符
- 算数运算符:+,-,*,/,%,–,++
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<
- 条件运算符:?:
- 扩展赋值运算符:+=,-=,*=,/=
算数运算
-
数据类型存在 低和高,一般结果为高的数据类型,short和byte结果为int
//如果存在数据类型为long,则结果类型为long;如果short和byte 则结果类型是int //数据类型存在 低和高,一般结果是高的数据类型 long a =123123123123123L; int b = 123; short c =123; byte d = 1; System.out.println(a+b+c+d); System.out.println(b+c+d); System.out.println(c+d); //int类型 结果: 123123123123370 247 124
自增自减
private static void autoAdd_Minus() {
System.out.println("======自增自减=======");
int a = 3;
int b = a++; //先给b赋值,再自增
//a++ a=a+1
System.out.println("a:"+a);
int c = ++a; //先自增,再给c赋值
System.out.println("a:"+a);
System.out.println("b:"+b);
System.out.println("c:"+c);
//幂运算 2^3
System.out.println(Math.pow(2,3));
}
结果集:
a:4
a:5
b:3
c:5
8.0
位运算
private static void bitWise() {
/*
A = 0011 1100
B = 0000 1101
A&B
A|B
A^B
~B 取反
*/
System.out.println("十进制2的二进制左移动3位:"+(2<<3));
}
结果:
16
七.JavaDoc
- idea自动生成:Tools -> Generate JavaDoc
- cmd命令行(进入Java文件所在目录):
javadoc -encoding UTF-8 -charset UTF-8 *.java