环境搭建
包括开发环境(编写代码)和运行环境(运行java程序)两部分,也正是因为java运行需要特定的运行环境才使java具有跨平台性。
安装JDK:JDK中既包含开发环境又包含运行环境
安装步骤:
1.下载jdk安装包
2.运行exe安装程序
安装时会提示选择两次安装路径,一次是JDK的安装路径,一次是JRE的安装路径,如不使用默认安装路径最好新建一个Java文件夹,将JDK和JRE安装到同一个文件夹下。
3.配置环境变量:右键此电脑 -> 高级系统设置 -> 环境变量
①新建JAVA_HOME,值为JDK的安装目录
②编辑Path,添加如下内容:
4.测试JDK是否安装成功:进入cmd命令行,输入javac或java
5.编写一个简单的Hello.java程序测试
public class Hello{
public static void main(String[] args){
System.out.println("Hello World ");
}
}
JDK的目录结构:
/bin:jdk中的一些命令,包括javac,java等。
/lib:jdk提供的类库
/jre:java runtime environment(java运行环境)
src.zip:java源代码
Java基础
一、关键字
定义:被Java语言赋予了特殊含义,用作专门用途的单词
特点:关键字中所有字母都为小写
用于定义数据类型的关键字:class、interface、enum、byte、short、int、long、float、double、char、boolean、void
用于定义数据类型值的关键字:true、false、null
用于定义流程控制的关键字:if、else、switch、case、default、while、do、for、break、continue、return
用于定义访问权限修饰符的关键字:private、public、protected
用于定义类、函数、变量修饰符的关键字:abstract、final、static、synchronized
用于定义类与类之间关系的关键字:extends、implements
用于定义建立实例以及引用实例,判断实例的关键字:new、this、super、instanceof
用于异常处理的关键字:try、catch、finally、throws、throw
用于包的关键字:package、import
其他修饰符关键字:native、strictfp、transient、volatile、assert
二、标识符
Java对各种变量、方法、类等要素命名时使用的字符序列成为标识符。也就是说,凡是自己可以起名字的地方都叫标识符
定义合法标识符的规则:
- 由26个英文字母的大小写、数字0-9、_ 或 $ 组成
- 数字不可以开头
- 不可以使用关键字和保留字
- 严格区分大小写,但长度无限制
- 不能包含空格
- 类名首字母大写,变量名方法名首字母小写
Java中的命名规范:
- 包名:多单词组成时所有字母都小写,如xxxyyyzzz
- 类名接口名:多单词组成时所有单词的首字母大写,如XxxYyyZzz
- 变量名和函数名:多单词组成时第一个单词首字母小写,第二个单词开始每个单词首字母大写,如xxxYyyZzz
- 常量名:所有字母都大写,多单词时每个单词间用下划线连接,如XXX_YYY_ZZZ
三、变量
Java是强类型语言,每个变量必须先声明类型,后使用,使用之前需要赋初始值。
定义变量的格式:数据类型 变量名=初始化值
变量的作用区域:一对{}之间有效
四、数据类型
数据类型可分为以下几类:
数据类型 | 长度 | 表示范围 |
byte | 1个字节 | -128~127(-2的7次方~2的7次方-1) |
short | 2个字节 | -32768~32767(-2的15次方~2的15次方-1) |
int | 4个字节 | -2147483648~2147483647(-2的31次方~2的31次方-1) |
long | 8个字节 | -9223372036854775808~9223372036854775807(-2的63次方~2的63次方-1) |
float | 4个字节 | |
double | 8个字节 |
数据类型之间的转换:数据类型可以自动从低精度向高精度转换,具体转换关系如下图,实线表示自动转换时不会造成数据丢失,虚线则可能会出现数据丢失问题。
需要注意的是,两个整数类型相操作,结果类型为参与运算的数据类型中较大的那个,例如long+int=long,但如果是char、byte、short三个整数类型进行操作,结果会为int类型。
五、运算符
1.算数运算符
简单的不再赘述,注意以下即可:
运算符 | 运算 | 范例 | 结果 |
++(前) | 先自增后运算 | a=2;b=++a | a=3;b=3 |
++(后) | 先运算后自增 | a=2;b=a++ | a=3;b=2 |
--(前) | 先自减后运算 | a=2;b=--a | a=1;b=1 |
--(后) | 先运算后自减 | a=2;b=a-- | a=1;b=2 |
2. 逻辑运算符
&&与&的区别?
&为普通与,不论两个判断条件是什么都会依次执行进行判断。&&为短路与,当前面的判断条件为false时,不论后面的判断条件结果如何,最终结果都会为flase,所以当前面的判断条件为false时,短路与不会执行后面的判断条件。
3.位运算符:转成二进制后按位进行运算
运算符 | 解释 |
<< | 左移,被移除的高位丢弃,低位补0。每左移一位相当于乘以2 |
>> | 右移,被移除的低位丢弃,若二进制最高位是0,高位补0;若二进制最高位是1,高位补1。每右移一位相当于除以2 |
& | 二进制位进行与运算 |
| | 二进制位进行或运算 |
^ | 二进制位进行异或运算 |
六、数组
数组是一个数据类型,它可以存储多个相同类型的数据,数组中存储的数据称为元素。
定义数组的三种方法:
int[] data1 = new int[5];
int[] data2 = new int[]{4,6,78,8,90};
int[] data3 = {5,6,8,9,0};
通过数组的下标(索引)来访问数组中的元素,数组的下标从0开始。
数组的长度一旦定义就不能改变,可以通过length属性获得数组的长度。
数组的遍历:
String[] names={"James","Kobe","Jodan","Rose"};
//方法一
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
//方法二
for(String s:names){
System.out.println(s);
}
二维数组:本质上来说java并没有二维数组,所谓的二维数组其实还是一个数组,只不过数组中的元素类型是一个数组。
int[] a = {1,4,6};
int[] b = {4,5,7,89};
int[] c = {3,7};
//动态初始化
int[][] array = {a,b,c};
int[][] array2 = new int[3][5];
int[][] array3 = new int[3][]; //第二个参数可以省略
a[0] = new int[]{5,6,8};
a[1] = new int[]{6,7,9,0};
a[2] = new int[]{8,7,3,1};
//静态初始化
int[][] array4 = {{3,4,6},{6,7,8,9},{10,11,12}};