运行JAVA程序需要使用JRE
开发JAVA程序需要使用JDK
JDK包含开发工具和JRE,JRE又包含系统API和JVM.
JAVA1.8:编译工具:JAVAC.exe
运行工具;java.exe
bin文件夹:该文件夹存放了JDK的各种具命令
include:存放平台特定的头文件
lib:存放JDK工具的一些补充JAR包
conf:存放JDK相关配置文件(1.8版本没有这个文件夹)
Source:源(Src)
cd指令一次进入两个文件夹:cd ruanjian\java1.8
cls:清屏
cd…回退到上级目录
exit:退出命令窗口
一、JAVA的开发过程
编写、编译、运行。程序员参与的是程序编写过程,编译和运行都是可以通过软件运行的。编译过程中,源文件(.java)通过编译生成字节码文件(.class)。
javac xxx.java编译运行工具,java xxx运行工具
字符用UTF8编码,必须要用UT8解码。
1、第一个JAVA语言:
public class HelloWorld//文件命名要与class后面的一致
{
public static void main(String[] args)
{
System.out.println("hello,this is java world程勇");
}
}
第1行. public表示权限公共的意思,外部可以随意调用和访问,class表示类 ,HelloWorld就是类名字,此行代码表示的含义:创建了一个名为HelloWorld的权限公开的java类。
第2行main叫方法名(或者叫函数名), static表示静态的, 也就是只有一份, void表示无返回值(代码执行结束就结束了不用任何的反馈),此行代码的表示含义: main方法是属于当前类HelloWorld的,只要这一份, 且执行后没有值返回,.表示调用
第3行.输出语句,系统调用内部输出方法,打印出双引号中的内容
javac HelloWorld.java生产二进制文件HelloWorld.class,java HelloWorld,运行编译完成的文件。
2、第二个JAVA程序
public class HelloWorld//文件命名要与class后面的一致
{
public static void main(String[] args)
{
int num = 10;
System.out.println("num的值是:"+num);//加号表示拼接,把num的值拼接到字符串后面
System.out.println(num);//直接输出num
System.out.println("hello,this is java world程勇");
int 年龄 = 18;//汉语也能作为标识符
int ¥ = 100;//人民币符号也能作为标识符
System.out.println(年龄);
System.out.println(¥ );
}
}
ctrl+shift+/多行注释
JAVA中标识符是为方法、变量、用户定义项所定义的名称,其第一个字母是:字母、下滑线、美元符号,注意数字不能作为首字母开头。类是文件名,方法是函数名。
总结:
这里我们还遇到一个问题,环境配置没问题,javac编译不通过,解决方法是把该环境变量置顶。
标识符命名规则:
1)标识符不能以数字作为首字母开头;
2)不能使用java关键字或保留字;
3) Java 严格区分大小写;
4)中文是可以作为标识符的,只不过通读性不强(不建议写)
命名规范:
4)建议:标识符号需要做到英文的“见名知意"。
5)大驼峰命名法:首字母大写,后面组合的每个单词首字母大写—类名
6)小驼峰命名法:首字母小写,后面组合的每个单词首字母大写—方法名
7)变量命名规范:全部小写
3、JAVA中的常量:
javac中的常量一经初始化不可修改。
java程序运行过程中值保持不变的量。
final int NUM = 10;//成员常量,定义之初必须要赋值
public class con
{
public static void main(String[] args)
{
//关键词:final最终的,不可改变的
public static final double PI = 3.14;//静态常量
final int NUM = 10;//成员常量,定义之初必须要赋值
//num++;//编译错误,原因:常量定义后不可改变
}
}
常见的两种常量定义方式:
public static final double PI = 3.14;//静态常量
final int NUM = 10;//成员常量
!!!注意:
在定义常量时,需要注意如下内容:
(1)在定义常量时就需要对该常量进行初始化。
(2)final关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法
(3)为了与变量区别,常量取名一般都用大写字符。
package practice;
public class fina
{
public static void main(String[] args)
{
final int NUM = 10;
int num;
//NUM++;会报错
num = NUM + 'A';//75
System.out.println(NUM);
}
}
```c
数据类型包括基本数据类型和引用数据类型:
8种基本数据类型:
引用数据类型:
常量的分类:
整数常量:所有整数
小数常量:所有小数
字符常量:用单引号引起来,必须有内容,只有一个字符
字符串常量:用双引号引起来,可以写多个字符,必须有内容
布尔常量:只有两个值:true,false
空常量:只有一个值
4、java中的变量:
java语言是强类型语言,强类型语言包含以下两种含义:
(1)所有变量必须先声明后使用
(2)指定类型变量只能接受类型与之匹配的值
变量的作用域:
根据变量类型不同,变量分为两类:全局变量和局部变量。
成员变量:无 static修饰符;用对象名.变量名访问;其一直存在;作用范围是:类的内部,方法之外。
局部变量:有static修饰符,用类名.变量名访问或(对象名.变量名访问),类存在其存在
```c
变量分为成员变量和局部变量:
(1)成员变量又分为全局变量和静态变量。成员变量定义在方法体和语句块外,不属于任何一个方法,作用域是整个类。
|变量名称| 修饰 | 访问 | 生命周期 |
|全局变量| 无static修饰符 | 对象名.变量名 | 只要对象被当做引用就存在 |
|静态变量| 有static修饰符 | 类名.变量名/对象名.变量名|生命周期取决于类的生命周期|
(2)局部变量
变量作用范围是局部而非类的全部
1)作为方法的参数,作用范围在方法内
2)定义在方法内部,作用范围是:从被定义开始到方法的结束
3)定义在代码块中({代码}),作用范围是:从被定义开始到代码块的结束
//全局变量
package practice;
//定义全局变量
public class variable
{
int num = 12;
public static void main(String[] args)
{
variable Variable = new variable();
variable Variable1 = new variable();
Variable1.num = 90;
Variable.num = 99;
System.out.println(Variable.num);//99
System.out.println(Variable1.num);//90
}
}
//访问最好用类.变量名访问,静态变量属于类只有一份
package practice;
//定义静态变量
public class variable
{
static int num = 12;
public static void main(String[] args)
{
System.out.println(variable.num);
}
}
package practice;
//验证全局变量不只有一份只能在对象所在的方法中来调用
public class aaa
{
String zi = "lihua";
public static void change()
{
aaa aa = new aaa();
aa.zi = "huaji";
aaa aa1 = new aaa();
aa1.zi = "wjkn";
System.out.println(aa.zi);
System.out.println(aa1.zi);
System.out.println(aa.zi);
}
public static void main(String[] args)
{
aaa.change();
}
}
package practice;
//验证静态变量只有一份,但是出了该方法外也能用类名调用
public class aaa
{
static String zi = "lihua";
public static void change()
{
aaa aa = new aaa();
aa.zi = "huaji";
aaa aa1 = new aaa();
aa1.zi = "wjkn";
}
public static void main(String[] args)
{
change();
System.out.println(aaa.zi);
}
}
//全局变量不只有一份,各个对象都有一份
//静态变量属于类只有一份,输出结果是wjkn.
//局部变量
局部变量使用之前一定要进行初始化
package practice;
public class variable
{
//
public static void main(String[] args)
{
int num = 12;
System.out.println(num);
num(2,5);
num1();
variable Variable = new variable();//对象创建时就会执行一次即代码块会被执行
}
//①
public static void num(int a,int b)
{
System.out.println(a);
System.out.println(b);
}
//②
public static void num1()
{
int b = 10;
// System.out.println(a);
System.out.println(b);
int a;
}
//③
//代码块是属于对象的
{
int a = 99;
int b = 89;
System.out.println(a);
System.out.println(b);
}
}
总结:
(1)代码块是属于对象的,创建时会自动调用
(2)局部变量使用前一定要初始化
3、java中的方法
静态方法的调用与静态变量一样,都有两种。
代码块是属于对象,在创建对象的同时开始运行
静态方法可通过类名.方法名来访问,也可以通过对象名.方法名来访问。
3、字符集
ANSI码
ANSI编码是一种对ASCII码的拓展: ANSI编码用0x00~0x7f (即十进制下的0到127)范围的1个字节来表示1个英文字符,超出一个字节的
0x80~0xFFFF范围来表示其他语言的其他字符。
也就是说,ANSI码仅在 前128 (0-127) 个与ASCII码相同, 之后的字符全是某个国家语言的所有字符。值得注意的是,两个字节最多可以存储的字符数目是2的16次方,即65536个字符,这对于一个语言的字符来说,绝对够了。
还有ANSI编码其实包括很多编码:中国制定了GB2312编码,用来把中文编进去另外,日本把日文编到Shift JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准。受制于当时的条件,不同语言之间的ANSI码之间不能互相转换,这就会导致在多语言混合的文本中会有乱码。
4、字符集(ASC||编码)
ANSI编码:仅前128个字符和ASC||编码相同,后面的字符和所在国家的字符相同。ANSI编码包括了很多编码,中国制定了GB2312编码,用来把中文编写进去。
阶段复习一:JAVA的跨平台性
(1)java具有很强的语言规范性,对于不同平台,数据类型存储体现是一致的。c/c++中整数类型的长度是按占位宽度来决定的,int整数类型:
16位:2字节
32位:4字节
64位:8字节
java中,int整数类型就占4个字节。
(2)统一生产.class文件,各种不同的应用平台虚拟机使用了相同的程序存储格式,就是指字节码(bytecode),java的虚拟机只与字节码组成的.class文件进行交互,即一次编译,到处使用。
(3)java虚拟机的存在,可以将class文件转化为对应平台的二进制文件。
阶段复习二:环境变量的配置
JDK:JAVA的开发工具,开发java应用程序最小环境。
JRE:JAVA的运行环境,运行java应用程序最小环境。
JVM:JAVA虚拟机,解析和执行字节码文件。
大小关系:JDK>JRE>JVM。
阶段复习三:基础的DOS命令
javac :编译命令,将.java文件编译成.class文件
java :运行命令,将.class文件加载并执行(由java虚拟机来完成)
阶段复习四:
(1)开发应用程序需要经历哪几个必要的阶段
编写、编译、运行
(2)程序的主入口
main方法
(3)标识符的命名规则
标识符:字母、数字、$、_;首字母不能是数字。
变量名:java严格区分大小写。
java不能以关键字和保留字命名。
中文可以作为变量使用,但不建议
变量名应该见名知意:
int num = 0;
int age = 18;
String username = "张三"。
变量遵循小驼峰命名法,首字母小写,其余每个字母都大写。
阶段复习五:
常量:通常由final static所修饰,定义后不可改变。
变量:定义之后,值可改变,又分为成员变量和局部变量。
(1)成员变量,定义在类里面,方法和代码块外面。
public class HelloWorld
{
String name = "liHua";//成员变量里的全局变量
public static void out()
{
HelloWorld hw1 = new HelloWorld();
hw1.name = "李华";
HelloWorld hw2 = new HelloWorld();
hw2.name = "李黎明";
System.out.println(hw1.name);
System.out.println(hw2.name);
}
public static void main(String[] args)
{
out();
}
}
//不止一份,任意对象改变值不会影响其他对象访问
//全局变量只能对象.变量名访问
import java.sql.SQLOutput;
public class HelloWorld
{
static String name = "liHua";//成员变量里的静态变量
public static void out()
{
HelloWorld hw1 = new HelloWorld();
hw1.name = "李华";
HelloWorld hw2 = new HelloWorld();
hw2.name = "李黎明";
System.out.println(hw1.name);
System.out.println(HelloWorld.name);
}
public static void main(String[] args)
{
out();
}
}
//只有一份,任意对象改变值会影响其他对象访问
//静态变量与全局变量只差一个关键字static
//静态变量可(对象.变量名)/(类.变量名)访问
(2)局部变量定义在方法内部,方法的参数中,或代码块中;不同方法或代码块中可重名
、逻辑运算符
&&:左右为真结果才为真
||:左右有一个为真就为真
!:取反操作
需要注意的是:
1、与运算中,需要注意短路现象。
短路现象发生:当判断到有一个为false时,整个表达式就结束运行了
2、或运算中,需要注意短路现象。
短路现象发生:当判断到有一个为true时,整个表达式就结束运行了
短路情况一定程度上提升了运算性能。
确定的是:逻辑运算结果一定时boolean类型:true和false。
当1<2<3时,程序表达式应该为:(1<2 && 2<3)应该拆分为两个表达式。
public class LuoJi
{
public static void main(String[] args)
{
System.out.println(false && false);
System.out.println(false && true);
System.out.println(true && false);
System.out.println(true && true);
int a = 1;
System.out.println(false && ++a);
System.out.println(a);
int b = 2;
System.out.println(true || ++b);
System.out.println(b);
}
}