一、Java开发环境搭建
1.下载软件
首先我们需要下载java开发工具包JDK,下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
点击之后:
下载后JDK的安装根据提示进行,还有安装JDK的时候也会安装JRE,一并安装就可以了。
2.配置环境变量(基于win10系统,其他系统也差不多)
首先我们右键点击此电脑,选择属性,之后选择高级系统设置,出现
出现:
在系统环境变量中配置
- 变量名:JAVA_HOME
- 变量值:C:\Program Files (x86)\Java\jdk1.8.0_91 // 要根据自己的实际路径配置
- 变量名:CLASSPATH
- 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个"."
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
注:1.Windows10中,因为系统的限制,path变量只可以使用JDK的绝对路径。%JAVA_HOME%会无法识别,导致配置失败
2.如果使用1.5以上版本的jdk,不用设置
如图所示:
3.看看我们是不是安装成功
1."开始"->"运行",键入"cmd";
2.键入java -version查看java版本,然后键入javac命令,出现如图所示表示安装成功:
4.jvm/jdk/jre三者之间的关系
二、Java的注释
1.单行注释://
2.多行注释:/*想要注释的内容*/
3.文档注释:/**想要注释的内容*/
三、Java中的标识符
Java中的包、类、方法、参数和变量的名字可以由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但是标识符不能是数字开头,也不能是Java中的保留关键字,理论上:名字可以起任何名字,但是我们还是要做到见名知意,并采用驼峰命名法。
四、Java中的关键字
对于上面的关键字,我们应该注意:
(1)虽然goto、const在java中并没有任何意义,却也是保留字,它们与其他的关键字一样,在程序中不能用来作为自定义的标识符
(2)true、false、null虽然不是关键字,但是却作为一个单独标识类型,也不能直接使用。
(3)assert和enum关键字java新增的内容,assert是在jdk1.4中增加进来的,而enum是在jdk1.5后增加进来的。
五、数据类型划分
六、基本数据类型
序 号 | 数据类型 | 大小/字节 | 可表示的数据范围 |
1 | long | 8 | -9223372036854775808~9223372036854775807 |
2 | int | 4 | -2147483648~2147483647 |
3 | short | 2 | -32768~32768 |
4 | byte | 1 | -128~127 |
5 | char | 2 | 0~255 |
6 | float | 4 | -3.4E38(-3.4*10^38)~3.4E38(3.4*10^38) |
7 | double | 8 | -1.7E308(-1.7*10^308)~1.7E308(1.7*10^308) |
8 | boolean | - | true或false |
七、数据类型的转换
a.自动类型转换
转换从低级到高级
低-----------------------------------------------高 |
byte,short,char->int->long->float->double |
数据类型转换必须满足遵守下面几个规则
1)不能对boolean类型进行类型转换
2)不能把对象类型转换成不相关的对象
3)在把容量大的类型转换成容器小的类型时必须使用强制类型转换。
4)转换过程中可能出现溢出或损失精度,这种情况发生在大数据类型强制转换成小数据类型
int i =128;
byte b = (byte)i;
5)浮点数到整型的转换会省略小数部分,注意这里不是四舍五入,而是直接截去
(int)23.7 == 23;
(int)-45.89f == -45
b.强制类型转换
1)条件是转换的数据类型必须是兼容的
2)格式:(DataType)value type是要强制类型转换后的数据类型实例:
public class QiangZhiZhuanHuan{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
}
}
运行结果:
int强制类型转换为byte后的值等于123 |
注意:隐含的强制类型转换
1.整数的默认类型为int
2.浮点型不存在这种情况,因为在定义float类型时必须在数字后面加上F或f.。
八、运算符
注意:
1.算数元素++i(--i)和i++(i--)的区别,++为前缀表示先运算再进行赋值,++为后缀表示先赋值再运算,实例:
public class selfAddMinus{
public static void main(String[] args){
int a = 5;//定义一个变量;
int b = 5;
int x = 2*++a;
int y = 2*b++;
System.out.println("自增运算符前缀运算后a="+a+",x="+x);
System.out.println("自增运算符后缀运算后b="+b+",y="+y);
}
}
结果:
自增运算符前缀运算后a=6,x=12 |
自增运算符后缀运算后b=6,x=10 |
2.逻辑运算符中,&和短路运算符(&&)的区别,短路运算符在使用逻辑与的时候,两个操作都为true的时候,结果才为true,但是当得到第一个操作为false时,其结果必然是false,不会继续判断第二个操作。实例:
public class LuoJi{
public static void main(String[] args){
int a = 5;//定义一个变量;
boolean b = (a<4)&&(a++<10);
System.out.println("使用短路逻辑运算符的结果为"+b);
System.out.println("a的结果为"+a);
}
}
结果为:
使用短路逻辑运算符的结果为false |
a的结果为5 |
3.三目运算符(?:),“?”前面的条件为true,执行“:”前面的表达式,条件为false,执行“:”后面的表达式
使用格式:变量=判断条件?表达式1:表达式2
4.instanceof运算符,用于操作对象实例,检查该对象是否是一个特定类型
格式:
( Object reference variable ) instanceof (class/interface type)
如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真
实例:
String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
5.java运算符优先级
单目:单目运算符+ –(负数) ++ -- 等
乘除:算数单目运算符* / % + -
为:位移单目运算符<< >>
关系:关系单目运算符> < >= <= == !=
逻辑:逻辑单目运算符&& || & | ^
三目:三目单目运算符A > B ? X : Y
后:无意义,仅仅为了凑字数
赋值:赋值=
九、java选择结构
1.if结构,实例:
public class Test {
public static void main(String args[]){
int x = 10;
if( x < 20 ){
System.out.print("这是 if 语句");
}
}
}
运行结果:
这是 if 语句
2.if……else结构,实例:
public class Test {
public static void main(String args[]){
int x = 30;
if( x < 20 ){
System.out.print("这是 if 语句");
}else{
System.out.print("这是 else 语句");
}
}
}
运行结果
这是 else 语句
注:if……else可以进行嵌套也可以有,if……else if……else结构,实例:
public class Test {
public static void main(String args[]){
int x = 30;
if( x == 10 ){
System.out.print("Value of X is 10");
}else if( x == 20 ){
System.out.print("Value of X is 20");
}else if( x == 30 ){
System.out.print("Value of X is 30");
}else{
System.out.print("这是 else 语句");
}
}
}
运行结果:
Value of X is 30
3.switch
判断一个变量与一系列值中某个值是否相同,每一个值成为一个分支,实例:
public class Test {
public static void main(String args[]){
//char grade = args[0].charAt(0);
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("优秀");
break;
case 'B' :
case 'C' :
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
case 'F' :
System.out.println("你需要再努力努力");
break;
default :
System.out.println("未知等级");
}
System.out.println("你的等级是 " + grade);
}
}
运行结果:
良好 你的等级是 C
十、Java循环结构
1.while循环,实例:
public class Test {
public static void main(String args[]) {
int x = 10;
while( x < 20 ) {
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}
}
}
2.do while循环,实例:
public class Test {
public static void main(String args[]){
int x = 10;
do{
//循环体
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}while( x < 20 );
}
}
注:while循环和do while循环的区别,do while首先要执行一次循环体
3.for循环,实例:
public class Test {
public static void main(String args[]) {
for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x );
System.out.print("\n");
}
}
}
这三种的循环结果都是
value of x : 10 value of x : 11 value of x : 12 value of x : 13 value of x : 14 value of x : 15 value of x : 16 value of x : 17 value of x : 18 value of x : 19 |
4.Java增强for循环
Java5引入的一种主要用于数据的增强for循环,实例:
public class Test {
public static void main(String args[]){
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names ={"James", "Larry", "Tom", "Lacy"};
for( String name : names ) {
System.out.print( name );
System.out.print(",");
}
}
}
程序运行结果:
10,20,30,40,50, James,Larry,Tom,Lacy,
5.循环的中断
break关键字和continue关键字:
1.break,条件满足直接跳出循环,实例:
public class Test {
public static void main(String args[]) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
// x 等于 30 时跳出循环
if( x == 30 ) {
break;
}
System.out.print( x );
System.out.print("\n");
}
}
}
程序结果:
10 20
2.continue,条件满足跳出本次循环,实例:
public class Test {
public static void main(String args[]) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
if( x == 30 ) {
continue;
}
System.out.print( x );
System.out.print("\n");
}
}
}
程序结果:
10 20 40 50
十一、Java数组(一组相关数据的集合)
a.一维数组:
1.数组的静态初始化:
格式:数据类型[] 数组名 ={初值0,初值1,……,初值n}
2.数组的动态初始化:
格式:数据类型[] 数组名 = new 数据类型[长度],数组名[i]=值,i的范围:0~长度-1
b.二维数组:(相当于一张表)
格式:数据类型 数组名[] = new 数据类型[行的个数][列的个数]
c.Arrays类
方便对数组进行操作,它所提供的方法都是静态的
常用方法:
- 对数组进行排序:通过sort方法,按升序
- 对数组进行比较:通过equals方法比较数组中的元素值是否相等
参考链接:https://www.cnblogs.com/zjfjava/p/5996666.html