Java基础
java三大基础
- JavaSE:标准版(主要用于桌面程序、控制台的开发…)*
JavaME:嵌入式开发(手机程序、小家电…)- JavaEE:E企业级开发(web端、服务器开发…)
JDK、JRE、JVM
JDK:Java Development Kit (Java开发者工具包,JDK包含了JRE)
JRE:Java Runtime Environment
JVM:JAVA Virtual Machine(在所有操作系统上模拟了cpu,单独处理java相关的东西)
1bit表示1位
1Byte表示一个字节 1B=8b
1024B=1KB
1024KB=1M
1024M=1G
Java安装
安装JDK
- 百度搜索JDK8,找到下载地址
- 同意协议
- 下载电脑对应版本
- 双击安装JDK
- 记住安装路径
- 配置环境变量
- 搜索“高级系统设置”
- 环境变量–>系统变量–>JAVA_HOME
- 配置path变量,双击打开
- 新建“%JAVA_HOME%\bin",“%JAVA_HOME%\jre\bin”
- 确定,完成
Java-基础语法
public class Hello{
public static void main(String[] args){
System.out.print("Hello,World!");
}
}
Java-注释、标识符、关键字
注释
单行注释://
public class Hello {
public static void main(String[] args) {
//System.out.println("Hello,World!");
}
}
多行注释:/*
public class Hello {
public static void main(String[] args) {
System.out.println("Hello,World!");
/*
我是多行注释
我是多行注释
*/
}
}
文档注释:/**
public class Hello {
public static void main(String[] args) {
System.out.println("Hello,World!");
/**
* 文档注释
* 文档注释
*/
}
}
标识符、关键字
注意点:
- 所有的标识符都应该以字母A-Z或者a-z,$,或者下划线_开始
- 首字符之后可以是字母A-Z或a-z,$,下划线_或者数字的任何字符组合
- 不能使用关键字作为变量名或者方法名
- 标识符是大小写敏感的
- 可以使用中文名,但不建议,拼音也不建议
- 合法标识符举例:age、$salary、_value、__1_value
Java-数据类型
Java是一种强类型语言,要求变量的使用严格符合规定,所有变量都必须先定义后使用,安全性高,速度相对较慢
弱类型语言
基本分类
Java的数据类型分为两大类:
-
基本类型(primitive type)
- byte
- short:16位整数,有效数值范围是-32768~32767
- int:有符号整数,位数由操作系统决定,通常是4个字节,即32位
- long:长整数,有效范围-2147483648~2147483647
- float:浮点数,位数是32位,用于表示小数,有效范围1.175494351e-38~3.402823466e+38
- double:双精度浮点数,位数8*8=64位,用于表示更大位数的小数,有效范围是1.7e-308~1.7e+308
- char:表示8位字符
- boolean,只有两个值,是/非
-
引用类型(reference type)
拓展内容
整数拓展:进制,二进制0b、八进制0、十进制、十六进制0x
public class Demo3 { public static void main(String[] args) { //整数拓展,进制,二进制0b、八进制0、十进制、十六进制0x int i = 10; int i1 = 0b10; int i2 = 010; int i3 = 0x10; System.out.println(i); System.out.println(i1); System.out.println(i2); System.out.println(i3); } } 输出:10、2、8、16
浮点数拓展:float,有限、离散、舍入误差、大约、接近但不等于
public class Demo3 { public static void main(String[] args) { //浮点数拓展 float f = 0.1f; //0.1 double d = 1.0/10; //0.1 //判断f和d是否相等 System.out.println(f==d); //false float d1 = 2322134556677f; float d2 = d1 + 1; //判断d1和d2是否相等 System.out.println(d1==d2); //true } } 输出:false、true
字符拓展:强制转化
public class Demo3 { public static void main(String[] args) { //字符拓展,强制转化 char c1 = 'A'; char c2 ='中'; System.out.println(c1); System.out.println((int)c1);//强制转换 System.out.println(c2); System.out.println((int)c2);//强制转换 //所有字符本质还是数字 //Unicode编码表,(a=97,A=65) 0-65536 } }
转义字符,\t 制表符、\n 换行
public class Demo3 { public static void main(String[] args) { //转义字符 System.out.println("Hello\tWorld!"); System.out.println("Hello\nWorld!"); } } 输出: Hello World! Hello World!
布尔值拓展
public class Demo3 { public static void main(String[] args) { //布尔值扩展 boolean flag = true; if (true){} if (flag){} if (flag==true){} if(2>1){} 1.写死 2.布尔类型的变量 3.关系运算符的结果 } }
- 引用类型(reference type)
Java-类型转换
由于Java是强类型语言,所以要进行有些运算时,需要用到类型转换
在运算时,不同类型的数据先转化为同一类型,然后进行运算
强制类型转换:由低到高转换
自动类型转换:由高到低转换
public class Demo4 {
public static void main(String[] args) {
//强制转换,由高到低转换
int c1 = 10;
byte c2 = (byte)c1;
System.out.println(c1);
System.out.println(c2);
//自动转换,由低到高转换
int c3 =128;
double c4 = c3;
System.out.println(c3);
System.out.println(c4);
}
}
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换为低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
Java-变量、常量
变量
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类变量:首字母小写和驼峰原则:mouthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man、GoodMan
- 方法名:首字母小写和驼峰原则:run()、runRun()
public class Variable{
static int allClicks=0; //类变量
String str="Hello world"; //实例变量
public void method(){
int i = 0; //局部变量
}
}
类变量
实例变量、局部变量
实例变量:从属于对象;如果不自行初始化,这个类型的默认值为0,0.0,布尔值默认返回false;除了基本类型,其余的默认值都是null
public class Demo变量 {
//类变量,关键字static
static double salary = 2500;
//main方法
//实例变量:从属于对象;如果不自行初始化,这个类型的默认值为0,0.0,布尔值默认返回false;除了基本类型,其余的默认值都是null
String name;
int age;
public static void main(String[] args){
//局部变量,必须声明和初始化值
int a = 10;
System.out.println(a);
//变量类型 变量名字 = new Demo变量()
Demo变量 demo变量 = new Demo变量();
System.out.println(demo变量.age);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
}
}
常量
常量:初始化后不能再改变值,不会变动的值。
可以理解为一种特殊变量,它的值被设定后,在程序运行过程中不允许被改变。
关键词:final
final 常量名=值; final double PI=3.14;
常量名一般使用大写字符
public class Demo常量 {
//static、final属于修饰符,不区分前后
//常量一般使用大写来表示
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
Java-运算符(operator)
- 算数运算符:+,-,*,/,%(模运算,取余),++(自增),–(自减)
- 赋值运算符:=
- 关系运算符:<,>,>=,<=,==,!=instanceof
- 逻辑运算符:&&,||,!(与,或,非)
- 位运算符:&,|,^,~,>>,<<,>>>(了解)
- 条件运算符:?
- 扩展赋值运算符:+=,-=,*=,/=
算术运算符
" + - * / "
加减乘除
package _3_运算符;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLPortType;
public class _1_算数运算符 {
public static void main(String[] args) {
//二元运算符
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); #int属于整数类型,强制转换小数类型
}
}
输出:
30
-10
200
0.5
package _3_运算符;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLPortType;
public class _1_算数运算符 {
public static void main(String[] args) {
long c = 1223447778L;
double d = 34566;
short e = 32767;
int f = 3457776;
byte g = 87;
System.out.println(c+d+e+f+g);//long
System.out.println(d+e+f+g);//double
System.out.println(e+f+g);//short
System.out.println(f+g);//int
}
}
输出:
1.226972974E9
3525196.0
3490630
3457863
" % "
取余
package _3_运算符;
public class _2_关系运算符 {
public static void main(String[] args) {
int h = 10;
int i = 20;
int g = 33;
System.out.println(g%h);//取余,g / h = 3...3
}
}
输出:
3
" ++ "
自增
package _3_运算符;
public class _2_关系运算符 {
public static void main(String[] args) {
//自增,num=num+1
int num1 = 3;
System.out.println(num1);//3
//先赋值
int num2 = num1++;//3
System.out.println(num2);
//num1=num1+1,再执行+1
//num1=num1+1,先执行+1
//再赋值
int num3 = ++num1;//5
System.out.println(num3);
}
}
输出:
3
3
5
" – "
自减
package _3_运算符;
public class _2_关系运算符 {
public static void main(String[] args) {
//自减,n=n-1
int n = 5;
System.out.println(n);//5
//先赋值,n1=5
int n1 = n--;
System.out.println(n1);//5
//再执行n1=n-1
//先执行,n2=n-1
//再赋值
int n2 = --n;
System.out.println(n2);//3
}
输出:
5
5
3
关系运算符
" >,<,>=,<=,==,!= "
package _3_运算符;
public class _2_关系运算符 {
public static void main(String[] args) {
//返回结果:布尔值类型 false/true
int a = 10;
int b = 20;
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a>=b); //false
System.out.println(a<=b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
}
}
逻辑运算符
“ && || ! ”
&& 与(and)、|| 或(or)、! 非(取反)
package _3_运算符;
public class _3_逻辑运算符 {
public static void main(String[] args) {
//&&与,||或,!非
boolean a = false;
boolean b = true;
System.out.println("a && b:" + (a && b));
//false,两个变量都为真,结果才为true
System.out.println("a || b:" + (a || b));
//true,两个变量有一个为真,结果为true
System.out.println("!(a && b):" + !(a && b));
//true,a&&b的结果为false,那非false,就是true
}
}
输出:
false
true
true
短路运算
package _3_运算符;
public class _3_逻辑运算符 {
public static void main(String[] args) {
//短路运算
//即当执行至第一个变量的值为false时,则不再往后执行,直接返回false
int c = 5;
boolean d = (c<2)&&(c++<2);
System.out.println(d);//false
System.out.println(c);//5
}
}
输出:
false
5
位运算符
“ &,|,^,~ ”
A = 0100 0111
B = 1100 0110
A&B = 0100 0110
//A与B,位运算,如果对应位都为1,则为1,否则为0
A|B = 1100 0111
//A或B,如果对应位都为0,则为0,否则为1
A^B = 1011 1110
//取反,对应位相同则为0,否则为1
~B = 0011 1001
//取反,B对应位为1,则取反值0,对应位为0,则取反值1
~A = 1011 1000
" <<,>> "
**左移:**num*2
右移:num/2
位运算:跟底层二进制打交道,效率高
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
<< 左移,相当于num*2
>> 右移,相当于num/2
//2*8怎么计算会比较快
2<<3;//2左移3位
条件运算符
" += 、-= "
public class _7_关系运算符 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a = a+b
a-=b; //a = a-b
System.out.println(a);
}
}
输出:
30
-10
" + 字符串连接符"
public class _7_关系运算符 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//字符串连接符 + , String
System.out.println(a+b+" "); //先进行a+b的运算,在进行字符串转换
System.out.println(""+a+b); //直接转换字符串,进行拼接
}
}
输出:
30
1020
三元运算符
" ? : "
public class _8_三元运算符 {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则结果为z;
int score = 80;
System.out.println(score<60?"不及格!":"成绩合格!");
}
}
输出:
成绩合格!
包机制
为了更好地组织类,java提供了包机制,用于区别类名的命名空间
导包
JavaDoc
javadoc命令是用来生成自己API文档的——文档注释
参数信息:
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
借助文档注释符:/**
public class _9_javaDoc {
String name;
/**
* @author Tt
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
通过命令行生成
通过命令行生成
格式:javadoc 参数 java文件
举例:javadoc -encoding UTF-8 -charest UTF-8 文件名.java
//生成API文档
//-encoding UTF-8 -charest UTF-8让中文展示更加正常
通过IDEA生成javadoc文档
1.选择生成JavaDoc文档的范围
2.输出目录自己专门设置一个文件夹,方便后期查阅
3.区域设置,决定文档的语言,简体中文就是zh_CN、繁体(台湾)zh_tw、繁体(香港)zh-hk、英语(香港)en-hk、英语(美国)en-us、英语(英国)en-gb、英语(全球)en-ww
4.设置参数为了显示中文不出现乱码
-encoding UTF-8 -charset UTF-8
5.即可生成doc文档