常用的操作系统:windows 7 10 xp vista 8 可视化界面 一般用户常用
Linux 开发员比较喜欢使用
操作系统位数:
x86 win32 软件只能在32位系统使用,可以在64位系统兼容使用
x64 只能在64位系统使用,不能在32位系统使用
Java平台无关性:
一个java(代码开源)程序可以在任意的操作系统使用,
通过不同的JVM将程序转换为对应的平台能使用的代码
一个C语言(不开源)编写的程序只能在windows系统使用
字节码:二进制语言
十进制语言:由0-9的数字组成 12; 第二位表示1*10 100 第三位表示1*10*10
二进制语言:由0-1的数字组成 第n位数字a表示的值为:a*2^(n-1) 100 第三位表示1*2*2 1*2^2
电路板:有很多回路,每个回路只有两种状态:通电、断电
将电脑电路板的通过/断电与0/1对应起来
存储信息时根据电路板的回路的状态转换对应的二进制数字(机器码表示)
将二进制数字(机器码)转换为人类常用的数据:ASCII码将每8位机器码转换为一些特殊符号、数字、英文
每8位机器码 称为一个字节(字节码)
字节码:在读写的时候按照字节进行读写,每8个机器码读取一次
中文比较特殊:两个字节表示一个汉字
十六进制:100 第三位表示1*16*16=1*(1*2*2*2*2)*(1*2*2*2*2)
2个16进制表示一个字节 8个二进制表示一个字节
---编译.java代码的命令:javac
一次性编译 多次使用 java语言是编译执行的语言
C语言程序没有编译执行,每次运行速度基本一致;
---运行.class程序的命令:java
java程序第一次运行时比较慢(因为需要编译),第二次以后非常快(不需要编译)
Java运行时(JVM处理):
1.类加载器(ClassLoader):加载类 初始化一个类
2.字节码校验器验证:java异常 例如:类转换异常、空指针异常、数字格式化异常等等
3.校验失败则抛出异常提示程序员,程序中断
校验成功则由解释器逐行解析执行代码语句,转换为对应的操作系统可以识别的内容
4.将解析后的内容传递给操作系统平台去执行
JVM Java Virtual Machine Java虚拟机 Java CPU Java 中心控制器
1.Java跨平台原理:
Java程序的运行机制:首先使用javac.exe将源程序(后缀.java)编译成与平台无关的字节码文件
(后缀.class),然后由Java虚拟机(JVM)读取并处理.class文件,Java解释器(JVM组件)
负责将处理后的文件在相应的平台上运行。
Java中所有程序都是在JVM中执行的,所以开发源代码时无需考虑平台;
只要根据不同的平台安装对应的JVM,就可以在不同的平台执行所有的JAVA程序了。
注:javac.exe编译器,保持在JDK的bin目录下
2.在Windows中搭建JAVA开发环境JDK:
Java Development Kit
Java版本:
JavaME 已淘汰 微型Java
JavaSE 标准版Java
JavaEE 企业版(工作时使用)
JDK最新版1.8 测试版 稳定版1.6 1.7
2.1 目录说明:
2.1.1 bin:存放各种JAVA命令,需要在Windows中注册后才可以使用;
常见的java命令:
javac:将源代码编译为class文件
java:执行class文件
javadoc:生成帮助文档及API
jar:将代码归档,生成一个jar包
备注:后缀为.exe的文件是一个应用程序的执行文件(客户端),
相当于java代码里面的主方法(main方法),
执行每一个java命令,相对于执行对应的源代码的主方法
2.1.2 lib:存放Java类库文件;一些jar包 工具类
2.1.3 jre: 客户端目录,供客户使用
2.1.4 demo:存放演示文件,可能没有这个目录
注:javabean 已淘汰 java小应用程序,java代码片段
2.2 环境变量说明:
JAVA_HOME:JDK根目录,设置后,软件使用JDK时默认在根目录下面搜索
PATH:bin目录的绝对路径,用于找到JAVA可执行命令;
CLASSPATH:类执行路径,指向lib目录,才能找到并执行类库中的类;
注:classpath默认指向当前目录,但可以通过命令set classpath修改;修改后可以跨盘执行类;
修改classpath只是修改类路径,对源代码路径没有影响;
跨盘编译源代码需要在源文件前面加上绝对路径,
例如:在C盘编译E盘的代码:javac E:/hello.java
在C盘执行E盘的类: set classpath=E:
java hello
3. 数据类型
3.1 八大基础数据类型及对应的封装类:
封装类 数据类型
Byte类: byte(8bit)
Short类: short(16bit)
Integer类: int(32bit)
Long类: long(64bit)
Float类: float(32bit)
Double类: double(64bit)
Character类:char(16bit)
Boolean类: boolean(1bit)
3.2 引用数据类型:数组、类(如:String)、接口
注:引用数据类型的初始值为null;
3.3声明变量
3.3.1 声明格式:
1.声明变量同时赋值:数据类型 自定义变量名=变量值;
2.声明变量暂不赋值:数据类型 自定义变量名; 变量名=变量值;
3.数据类型 自定义变量名=new 类型对应的封装类(参数);----引用数据类型常用的声明方法
注:声明变量会开辟一个内存空间,但初始空间为null,不能直接访问(未实例化),否则会出现空指针异常;
变量的赋值就是实例化的过程;
1及2为基础类型常用声明赋值的方法,但不适用于类变量;类变量一般采用第三种方法;
基础类型变量的第3种方法实例:int a=new Integer(10);等价于int a=10;
3.3.2 命名规则:
1.首字符:字母、下划线_、$;
2.其余字符:字母、下划线_、$、数字;
3.所有关键字不能作为变量名,即使符合以上两条规则;
3.3.3 作用域:
1.块的定义:每个块由大括号{}括起来,可以嵌套;每个块就是一段代码段。
2.全局变量:在类里面,方法外面声明的变量;作用域为整一个类
3.局部变量:在代码块或者方法里面声明的变量;作用域为声明它的大括号里面
4.静态的全局变量与局部变量重名时,优先选择局部变量
5.非静态的全局变量在静态方法中不能直接使用,只能通过对象引用
6.代码执行顺序:
局部按照从上到下的顺序逐个语句依次执行;
优先执行static语句、static代码块的语句;然后执行主方法的语句;
类实例化一个对象时,优先执行构造代码块的语句,再执行构造方法的语句;
4.数据类型转换
4.1 自动转换:转换前后类型兼容且转换后的类型表示的数据范围比转换前的类型大;例如:short a,byte b,int c=a+b;
4.2 强制转换:格式:(要转换的数据类型)变量名称;例如:int a=(int)1.25
4.3 所有基础数据类型都可以自动转换为String类型;例如:int a=5;String b=a+"a";则b="5a"
注意:由大范围强制转换为小范围时,数据会溢出,其溢出原理参考数据的机器码读取规则(C语言);
整数型原码:首位为符号,0正1负;
浮点数原码:位移阶数符合(0左1右)+位移阶数+数字符号(0正1负)+小数点后面的数字
将浮点数表示为s*2^j的形式,例如110.1101=0.1101101*2^11(小数点左移3个位置,j=11)
数据溢出:例如250(int)强制转换为250(byte)
250原码(int):0...11111010(中间还有22个0)
转byte:11111010,首位1表示负数,补110将首位变为0,所以数值为110,转为十进制表示就是-6;数据溢出了
计算机存储浮点数:
32位:0-22位为有效数字 23~30位为位移阶数 31位为符号位
64位:0-51 52-62 63