java的编译和执行
·编译
·运行
1。java的编译 java .class 编译过程(是否符合java语法 符合则生成字节码文件)
→( .class)字节码文件
编译过程:新建java.c文件 编写源代码源程序 通过 Java.exe命令 将java.c文件编译成 .class文件
javac是一个java编译器工具
class文件是最终要执行的文件 class文件生成之后 java源程序删除并不影响 java的运行 因为它执行的是java class但是一般不删除源文件 因为class文件执行的效果可能不是我们想要的 这时候需要重新修改class文件
此时 class文件已经可以在各大操作系统上运行了 这就是所谓的跨平台
**
** 2.java的运行阶段运行 ****
类加载器-虚拟机-操作系统-硬件平台
jdk安装之后 有javac.exe编译阶段 java.exe运行阶段
java 空格 加上类名 例如:硬盘上有一个 A.class 那么就这样用 Java A
而不能写成 java A.class
输入Java A java.exe启动JVM JVM启动类加载器(classloader) 加载类
classloader去硬盘上搜索A.class找到该文件 将class文件装载到JVM
JVM将程序解释成二进制代码
然后操作系统识别
jdk java开发工具包 开发人员 jre java runtime environment java的运行环境 jre 包括虚拟机jvm jvm只运行不开发 jdk开发
jdk包含jre包含jvm
所以按照jdk不需要再按照jre
二
编写第一个java程序
新建一个 HelloWorld.java文件
将源代码源程序写进去
javac 该文件生成class文件 (一定要具体到路径) 可以直接拉进去
这样就生成了class文件
生成class文件之后 java HelloWorld java+空格+类名
进入class文件 完成运行
java的注释
对代码的解释说明 提高程序的可读性
不会被编译到.class文件当中去
注释分为:
单行注释//
多行注释/* /
/*
*
*
*/
语言的解释
public static void main(String args[]) //程序的入口 主方法
{
//方法体
//方法体
java 语句 以 ;来终止
System.out.println(""); //表示 向 控制台 输出一段消息
}
字符串用双引号括起来
类体中不能直接编写java语句 除了声明变量
java语句应该写在main方法中去
/*
关于java语言中的标识符
1 命名规则和规范
java中黑色的都是标识符 类名 变量名 方法名 接口名 常量名
2一个合法的标识符只能由 数字 字母 下划线 美元符号$组成
不能由数字开头
关键字不能作开头 蓝色的
理论上没有长度的限制
3 命名规范 只是规范不是语法 不遵守规范编译器不会报错
所谓的规范
···类名 接口名 首字母大写 后面每个 首字母 大写
···变量名 方法名 首字母小写 后面每个单词首字母大写
···常量全部大写
*/
public class k{
public static void main(String[] args)
{
}
}
public class UerServerice{
public static void login(String uername,String password)
{
}
}
数据 字面值
‘abc’
123
3.14
true,false
" asdasdas "
字面值的类型 字符串型 字符型 数字 浮点型 整形 布尔类型 trus false
''字符 放单个字符
""字符串 一串字符
变量
1 变量 内存空间中存在的具体的值
本质上是内存中的一块空间 这块空间有数据类型 有名字 有数据(字面值)
是内存中存储数据的基本的单元
2数据类型的作用
不同的数据有不同的数据类型 不同数据会有不同的空间
3数据和数据类型必须一致
4类型+变量名
java中的变量必须先声明声明变量会新开辟出来一个内存空间再赋值才能访问
一行中可以声明多个变量 多个变量之间用逗号隔开 但是都需要赋值初始化
自上而下自顶向下( 即为在同一个作用域之中 变量名不能重复
) 如int i=100;
i=20;
int i=90;
这是错误的 声明了两块名字相同的内存空间
变量的作用域:
1 什么是作用域
变量的作用描绘的是变量的有效范围
在什么范围之内可以被访问 只要出了这个范围该变量就无法访问了
只要出了大括号就不认识了
如静态变量 编写在类体中 相当于全局变量 可以在任何地方进行访问
eg: for(int a=0;a<10;a++)
System.out.println(a) 这个会报错 无法编译 因为a变量的作用域实在for循环之中 在for循环之中for循环结束之后 a变量的内存就得到了释放
而如果是
int a;
for( a=0;a<10;a++)
System.out.println(a)
这个就不会报错 因为a是一个方法中的变量 可以继续访问