Java 基础
注释、标识符、关键字
注释
- 单行注释://
- 多行注释:/**/
- 文档注释:/** * /
IDEA快捷键:control+D 复制当前行到下一行
标识符
JAVA所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
- 关键字:JAVA自身定义好的单词,eg. char,void…
- 所有的标识符都应该以字母、美元符($)、或者下划线开始
- 首字符之后可以是字母、美元符($)、或者下划线或数字的任何字母组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
数据类型
JAVA是强类型语言,所有变量都必须先定义后才能使用。
基本数据类型
- 整数
byte:1个字节
short:2个字节
int:4个字节
long:8个字节
整数运算 运算值有long类型,结果为long类型,其他都为int类型
public class Demo1{
public static void main(String[] args) {
byte num1 = 10;
short num2 = 100;
int num3 = 1000;
long num4 = 100000000L; //long类型要在数字后+L;
System.out.print(num1);
System.out.print(num2);
System.out.print(num3);
System.out.print(num4);
}
}
- 浮点数
float:4个字节
double:8个字节
public class Demo2{
public static void main(String[] args) {
float num1 = 0.1f; //float类型要在数字后+f;
double num2 = 0.00001;
System.out.print(num1);
System.out.print(num2);
}
}
- 字符
char:2个字节
public class Demo2{
public static void main(String[] args) {
char a = ’A‘; //char类型只能赋值1个字符;
System.out.print(a);
}
}
- boolean:占1位,其值只有TRUE&FALSE
public class Demo3{
public static void main(String[] args) {
boolean flag = TRUE; //常与if语句连用;
}
}
引用类型
除基本类型之外的所有数据类型
- 类 eg. String…
- 接口
- 数组
拓展
public class Demo4{
public static void main(String[] args) {
// 整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int n1 = 0b10; //二进制0b;
int n2 = 10; //十进制;
int n3 = 010; //八进制0;
int n4 = 0x10; //十六进制0x;
System.out.print(n1);
System.out.print(n2);
System.out.print(n3);
System.out.print(n4);
/******************************************
/浮点数拓展: 银行业务/钱的表示
/使用 BigDecimal 数学工具类
******************************************/
//float 表现的字长是有限的 离散的 舍入误差 结果是大约数 接近但不等于
//最好完全避免使用浮点数进行比较
float f = 0.1f;
double d = 1.0/10;
System.out.print("====================================");
System.out.print(f==d);// result: false
float a = 232323232323232323f;
float b = a + 1;
System.out.print(f==d);// result: true
//转义字符
// \t table符
// \n 换行符
System.out.print("====================================");
System.out.print("Hello\tWorld");
System.out.print("Hello\nWorld");
System.out.print("====================================");
//对象 从内存分析
String sa = new String(original:"Hello world");
String sb = new String(original:"Hello world");
System.out.print(sa==sb); //result: false;
//布尔值扩展
boolean flag = true;
//if (flag == TRUE){} = if(flag){}
//less is more!
}
}
类型转换
从高位到低位***强制转换***,从低位到高位***自动转换***
低-------------->高
byte->short, char->int->long->float->double
强制转换:(类型)变量名
public class Demo5{
public static void main(String[] args) {
int i = 128;
//强制
byte b = (byte)i;//内存溢出
System.out.print(i);// 128
System.out.print(b);// -128
System.out.print("**************************");
//自动
double d = i;
System.out.print(i);// 128
System.out.print(d);// 128.0
System.out.print("**************************");
//精度问题
System.out.print((int)23.7); //23
System.out.print((int)-45.89f); //-45
System.out.print("**************************");
char c = 'a';
int i1 = c + 1;
System.out.print(i1); //98
System.out.print((char)i1) //b
System.out.print("**************************");
}
}
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转化为不相干的类型
- 在把高容量转化到低容量时,强制转换
- 转换的时候可能存在内存溢出,或精度问题!
- 操作比较大的数的时候,注意溢出问题
JDK7新特性,数字之间可以用下划线分割
public class Demo6{
public static void main(String[] args) {
int money = 10_0000_0000;
int years = 20;
int total = money*years;//计算时溢出
System.out.print(total);// -147...
System.out.print("**************************");
long total2= money*years; //结果任然是负数;
//默认是int,转换前已经存在问题;
long total3 = money*((long)years);//将其中一个转化为long;
}
}
变量、常量、作用域
- 变量:就是可以变化的量
Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值; 可以只用逗号隔开来声明多个同类型变量
- 作用域
- 类变量:写在类里的
- 实例变量:写在类中间
- 局部变量:写在fuction里面的
public class Variable{
//属性:变量
//类变量 static, 随着类的出现消失 而出现消失
static int allClicks=0;
//实例变量: 从属于对象;不一定需要初始化
//如果不初始化,这个类型的默认值 标准类型 0 0.0
//boolean: 默认false
//除了基本类型,其余的都是null;
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量: 必须声明和初始化
int i = 10;
//变量类型 变量名字 = new Variable();
Variable demo7 = new Variable();
System.out.print(demo7.age);
}
//其他方法
//public void add(){}
}
- 常量:不会变动的值
- 常量名一般使用大写字母
final 常量名=值;
final double PI = 3.14;
//修饰符不存在先后顺序;
static final double length = 8.0;
final static double length2 = 8.0;
运算符
基本运算符
- 算数运算符: +,-,*,/, %(模运算/取余),++, –
public class Demo7{
public static void main(String[] args) {
//++ -- 自增 自减
int a = 3;
int b = a++; //先赋值,再++
int c = ++a; //先++,再赋值;
System.out.print(a); // 5
System.out.print(b); // 3
System.out.print(c); // 5
//幂运算; 很多运算 可以使用一些工具类来操作
double pow = Math.pow(2,3) //2的3次方;
//字符串连接符 + ,String
System.out.print("" +a+b); //53
System.out.print(a+b+""); //8
}
}
- 赋值运算符: =
- 关系运算符: >, <, >=, <=, ==, !=, instanceof
- 逻辑运算符: &&, ||, ! (与、或、非)
短路运算检证:
public class Demo8{
public static void main(String[] args) {
int a = 5;
boolean b = (a<4)&&(a++<4);//假如执行了后一句,结果应为6;
System.out.print(a); //5;
System.out.print(b); //false
}
}
- 位运算符: &, |, ^(异或), ~(取反), >>(右移), <<(左移), >>> [二进制位的运算]
2 * 8怎么运算最快? 2<<3 - 条件运算符:? :
x?y:z 如果x==true,则结果为y 否则为z
int score = 80;
String type = score<60? "及格":"不及格";
//有时可以当if用;
System.out.print(type); //及格
- 扩展值运算符:+=(a+=b:a=a+b),-=,* =, /=
包机制、JavaDoc
- 包机制:可将其视为文件夹
语法格式:package pkg1[.pkg2[.pkg3…]];
一般利用公司域名倒置作为包名:eg. com.baidu.www
导入包: import pkg1[.pkg2…].( classname|* );
- IDEA创建项目;
- 选择empty project;
- file->project structure->project 设置jdk版本;
- file->new->module;
- src:new->package;
(拓展:阿里巴巴规范手册)
- JavaDoc
参数信息:
/**
*@author 作者名
*@version 版本号
*@since 指明需要最早使用的jdk版本
*@param 参数名称
*@return 返回值情况
*@throws 异常抛出情况
*/
通常加在类上和方法上
命令行生成操作:
javadoc -encoding UTF-8 -charset UTF-8 文件名.java
IDEA生成JavaDoc文件:
- 选择需要生成的文件;
- Tools->Generate JavaDoc;
- 设置生成目录;
- Other command line argument:-encoding UTF-8 -charset UTF-8;