一、JAVA环境配置
1.1 jdk安装
选择合适得jdk文件->安装在C盘下得Programs中
1.2 环境配置
在计算机属性高级系统设置中配置环境变量:
->JAVA_HOME=C:\Programs\Java\jdk1.8.0_25 一些Java开发工具直接通过查找JAVA_HOME扎到Java路径
->Path=%JAVA_HOME%\bin 帮助找到jdk的bin路径下可执行文件
->CLASSPATH=;%JAVA_HOME%\lib 类加载路径
1.3 HelloWorld
//创建txt文档,修改后缀为java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
1.4 控制台测试
win+r
cmd
cd /d E:\BigData\202103\Day001\code
javac HelloWorld.java
java HelloWorld
二、命名基础
cd : 切换目录(chance directory)
eg:cd /lixi/
cd .. : 返回上一级目录
c: -> 切换到c盘
d: -> 切换到D盘
dir : 查看文件目录下的所有的子文件或者子目录
rd : 删除目录
del : 删除文件
exit : 推出dos窗口
notepad : 打开记事本
mspaint : 打开画图
三、Java基础语法
1 特性
1. oop(面向对象)
2. 跨平台
3. 开源免费
4. 健壮性
5. 安全性
6. 垃圾回收机制(gc):自动帮助回收内存中使用完毕的程序。System.gc()建议jvm可以去回收垃圾。
2 环境变量(理解)
JAVA_HOME:因为后期有工具底层使用java源码开发,会需要调用JAVA_HOME去寻找JDK
PATH:系统会去PATH指定的路径下寻找命令
CLASSPATH:类加载的路径
2.1 HelloWorld
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello Ketty");
}
}
2.2 CLASSPATH
- 配置环境变量的
CLASSPATH=.;%JAVA_HOME%\lib
%JAVA_HOME%\lib:
这个配置是为了让我们在需要使用java的原生类的时候直接去调度
2.3 public
public class HelloWorld
被public修饰的class,他的类名必须和xxx.java文件的文件名称相同
3 注释:批注和解释(会用)
注释在编译的时候并不会被编译成class
3.1 3种
// : 单行注释
/* */ :多行注释
/** */ : 文本注释
public class Demo2 {
/**
* 入口方法
*/
public static void main(String args[]) {
// int a = 0;
}
/*
* 说
*/
public void speak() {
}
/**
* 欢迎学习
*/
public void welcome() {
}
}
javadoc Demo2.java 生成API文档,index.html
4 进制(了解)
4.1 进制的种类
2进制:逢二进一,1,0
8进制:逢八进一,0,1,2,3,4,5,6,7
10进制:逢二进一,0,1,2,3,4,5,6,7,8,9
16进制:逢g进一,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
5 标识符(理解)
5.1 什么是标识符
任何给java取名称的都叫做标识符
5.2 标识符的命名规则
1. 字母、下划线、数字、$
2. 数字一定不能开头
3. 标识符不能和关键字重名
4. 区分大小写
5. 长度无限(一般超过15个字符)
6. 见名知意
7. 中文,但是不让用(乱码),编码和解码
8. 驼峰命名:
类的命名:大驼峰》HelloWorld
方法/函数/变量:小驼峰》helloSiri
常量:全大写,单词之间使用下划线连接》BLUE_WATER
6 关键字(了解)
在java中被赋予了特殊含义的单词,全部都是小写
保留字:goto、const
7 8种简单类型/基本类型(记忆)
布尔类型:boolean,表示真假,只有true和false
整数类型:byte、short、int、long
浮点/小数类型:float/double
字符类型:char
7.1 整数类型
- 取值范围
// 0000 0000 --》 -128 ~ 127 --》 -2^7 ~ 2^7 - 1
// 1short = 2byte --》 -2^15 ~ 2^15 - 1
// 1int = 4byte --》 -2^31 ~ 2^31 - 1
// 1long = 8byte --》 -2^63 ~ 2^63 - 1
- 隐式转换
public class Demo4 {
/**
* 1bit
* 1byte = 8bit
* 1kb = 1024byte ----> 1k = 1000byte
* 1mb = 1024kb
* 1gb = 1024mb
* 1tb = 1024gb
* 1pb = 1024tb
* 1zb = 1024pb
* ...
*/
public static void main(String args[]) {
// 0000 0000 --》 128 ~ 127 --》 -2^7 ~ 2^7 - 1
// 1short = 2byte --》 -2^15 ~ 2^15 - 1
// 1int = 4byte --》 -2^31 ~ 2^31 - 1
// 1long = 8byte --》 -2^63 ~ 2^63 - 1
byte b = 1; //0000 0001
System.out.println(b);
long l = 123; // int,隐式转换
long l2 = 1L; // long, 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
int i = 1;
short s = 1;
if(b == l2) System.out.println("------"); //b: 0000 0000 0000 0000 0000 0000 0000 0001
//l2 :0000 0000 0000 0000 0000 0000 0000 0001
char c1 = 'a'; // 97
System.out.println(c1 + 1); // 98
}
}
两个数值类型通过运算符进行计算的情况下,两个变量会通过隐式转换为int类型进行计算(两个变量在转换的过程中不能损失精度)
7.2 小数类型
public class Demo5 {
public static void main(String args[]) {
float f = 9.0F; // 单精度
Double d = 9.0; // 双精度
int i = 9;
// 9.0 --》 0.8999999999999
System.out.println(i == d);
}
}
7.3 char
char c1 = 'a';
char c2 = '中'; // unicode
System.out.println(c2+100);
字符只能在声明的时候写一个单词或者一个汉字
java底层对于字符的处理采取的是unicode编码,所以支持的范围特别的广泛
7.4 boolean
true和false
boolean isok = true;
if(isok) System.out.println("hello world");
8 除开8种简单类型,其他的都是引用类型/复杂类型
String
数组
枚举
接口
类
。。。
9 练习
a=1, b=2
写程序将他们的值互换
import java.util.Scanner;
public class Demo6 {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入a的值:");
int a = scan.nextInt();
System.out.println("请输入b的值:");
int b = scan.nextInt();
System.out.println("a = " + a + ", b = " + b); // a = 1, b = 2
System.out.println("a和b的值互换之后的结果为:");
// 利用第三个变量
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a + ", b = " + b); // a = 1, b = 2
}
}
10 常量和变量(记住)
10.1 常量:不可变的值
1、2、3、4
"abc"
true
false
字面值常量:以上的都是
自定义常量:
final static 数据类型 常量名 = 值
e.g.
final static int NUM = 1;
NUM = 2;
C:\teach\hzbigdata2101\day002\code>javac Demo7.java
Demo7.java:4: 错误: 需要<标识符>
NUM = 2;
^
10.2 变量:可变的值
int i = 1;
i = 2;
int i2 = i;
数据类型 变量名 = 值/地址
- 局部变量
只要不是直接定义在类中的都是局部变量,局部只在局部生效
- 全局变量
定义在类中的,方法外/初始化块的就是全局变量
public class Demo8_Student {
public static int i = 2; // 全局变量
public static void main(String args[]) {
//int i = 1; // 局部变量
qphone();
System.out.println(i);
}
public static void qphone() {
System.out.println(i);
}
}
public class Demo9_Student {
public static int i; // 全局变量
public static void main(String args[]) {
//int i = 1; // 局部变量
System.out.println(i);
}
}
- 总结
1. 声明位置不同:
局部变量的作用域在方法或语句块中,全局变量在整个类中
2. 是否由默认初值
局部变量必须得自定义初始值,全局变量不用,有默认初值
全局变量 | 默认值 |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0 |
char | ‘’ |
boolean | false |
引用类型 | null |
10.3 内存简介(了解)
- 栈内存:Stack,连续的内存空间,先进后出,主要存放局部变量
- 堆内存:Heap,不连续的内存空间,存放对象,对象的实例。new出来的都放在这里
- 方法区(Method),其实他是在堆空间之内,存放类的信息,静态的变量和方法,常量池