JDK(Java Developmet Kit)java
JRE(Java RunTime Environment)的区别:编程
JRE只有运行JAVA程序的环境,没有开发相关的工具;JDK=JRE+开发相关的工具。浏览器
用记事本运行java程序出现的问题:工具
//能够执行的程序学习
class hello编码
{spa
public static void main(String[] args)操作系统
{翻译
System.out.println("Hello World!");指针
}
}
//本身编写的为何不能执行??
class hello
{
public static void main(String[] args)
{
System.out.println("如鹏(www.rupeng.com),欢迎你的加入!");
}
}
//以为应该是在同一个文件加下,两个类名彻底同样,因此没有执行
//我尝试将类名进行修改
class xiaowei
{
public static void main(String[] args)
{
System.out.println("如鹏(www.rupeng.com),欢迎你的加入!");
}
}
xiaowei.java(高级语言) -> xiaowei.class(二进制码)
java是依赖于字节码文件的
字节码文件(xiaowei.class)二进制代码,没法双击运行,须要java指令
Java程序运行必须依赖于Java运行环境(JRE),没法独立运行
JRE中的JVM(Java Virtual Machine,Java虚拟机)是运行.class二进制字节码文件的核心。
为何不直接生成.exe??
由于JVM负责翻译实现:一次编译,处处运行。(和不一样的系统打交道) EXE4J把写好的程序进行打包成.exe文件
C/C++编写的程序跨平台运行很难(主要是由于微软有些封装的类库只支持微软的产品)
使用Eclipse开发java程序
IDE(集成开发环境):java IDE有不少:其中组好的一款是Eclipse免费且开源。
Eclipse只是一个辅助开发的工具而已,Eclipse的运行以及编译出的程序运行仍是靠java。
Eclipse帮咱们作了什么?
答:Eclipse的Src存储了源代码文件夹,bin存放 .class文件
Eclipse个性化设置:
“窗口”->“首选项”->“常规”(Java样式)
练习一:
工做空间(workspace):相关的项目放在一个工做空间中,避免一个空间中项目太多,也不便于管理。
切换工做空间的方法:
退出重启,若是勾选了“将此值用做初始值而且询问”,则“文件”->“切换工做空间(switch workspace)”,从“工做空间”列表中选择(以前打开过的)或者浏览器选择工做空间根目录(包含 .metadata)
如何导入别人的项目到工做空间:
“包资源管理器(Package Explorer)”-> “导入(Import)”->“常规(General)”—>“现有项目到工做空间中(Existing Project Directory)”->“浏览”->“选择项目的根目录(包含.project文件)”或者WorkSpace,选择导入的项目便可。
注释
1.被注释的代码编译器忽略。
注释的做用:说明代码的做用;在程序中加入适当的注释;屏蔽无用的代码。
2.使用“//”注释一行代码,//以后的代码编译器会忽略
3./* */注释多行代码
4.注释不能太多,也不能够一点也不进行注释。
5.多行注释(/* */)不能进行嵌套
注释的应用:
关键字:
1.Java定义了一些关键字(public、static、void、int),这些关键字是构成java基本语法用的,这些关键字不必去背,一边学习,一边就掌握了。这些关键字在Eclipse环境下颜色为紫色。
2.像C中的goto、const在java中没有意义,可是仍是保留的,变量、类的名字也不能用这两个,他们也被称为“保留字”。
3.而main、String、System等这些都不是关键字。
标识符:
1.标示符是用来给类、方法、变量等命名用的‘
2.命名规则:
1)由字母(含大、小写)、中文(不推荐)、数字、下划线、$组成;
2)不能以数字开头;
3)不能是关键字
4.java语言是大小写敏感的:name和Name是两个不同的变量。
5.驼峰命名法:每一个单词的第一个字母大写
6.标示符要有意义:标示符的命名规范,不是强制规定,而是“潜规则”
类名:大写开头;
变量名、方法名:小写开头
变量:
1.数据通常都放在内存中。操做内存的时候要使用地址,一般指向内存的指针操做内存,变量是给这段内存取一个名字。我要告诉别人如何使用这块内存的话须要给这块区域取一个名字,好比:price,这个price就叫作“变量名”。
2.咱们能够把price变量指向内存的值改成三、五、10,可是能不能改成“Tom”呢?显然是不能够的!!!
所以这块内存中可以放什么类型的数据是有限制的,这就是“变量类型”。
3.定义一个变量的格式为:
(变量类型) (变量名)=(初始值)
变量的做用域:
1.变量在{}范围以内定义不能重名,定义一个int b=3;
在定义一个int b=10;编译出错。
2.int b=3;b=5;则能够,是由于对b进行了从新赋值操做。
注:使用已有的变量b。 变量前没有类型,就是使用变量;
变量前有类型,就是定义变量;变量在做用域范围内是不可以重复定义的。
3.int b;而后直接println(b);是不行的,由于没有赋初始值。局部变量使用以前必须赋给初始值。
声明时赋值或使用前赋值均可以
方式一:int a=5; 方式二:int a;
a=5;
数值类型:
1.整数类型:(基于32位操做系统)
byte(字节) 占用1字节(1*8 bit)
short(短整型) 占用2字节(2*8 bit)
int(整型)(默认) 占用4字节(4*8 bit)
long(长整型) 占用8字节(8*8 bit)
2.小数类型:
float(单精度浮点数) 占用4字节(4*8 bit)
double(双精度浮点数)(默认)占用8字节(8*8 bit)
1字节(byte)等于8位(bit)
1位(bit)只能表示0或1其中的一个状态(即表示二进制)
在Eclipse环境下:
整数常量默认为:int类型
小数常量默认为:double类型
注:选用数据类型的时候,在考虑到数据的可能范围以后,选择最小范围的类型,这样节省资源。
long>int>short>byte;
double>float;
整数类型转换(Type cast):
1. byte b=3;
int i=b;// 隐式类型转换
2.int m=9;
byte k=i;
//byte k=m;//不能够从int转换为byte类型
byte k=(byte)m;//显式类型转换
小数数据类型:
double d1=3.14D;//默认为double,因此通常不用写D
double d2=3.14;
double d3=3;
float f1=3.14;//不能从double转化为float。
小数默认为double,改成:
float f2=3.14F;
结论:
1.“大范围”=“小范围”:隐式转换
2.“小范围”=“大范围”:显式转换(强制类型转换)
3.都是整数参与乘除运算,结果仍是整数;整数常量参与乘除计算通常加f声明为小数类型,避免精度损失。
eg:
System.out.println((1/3)*3);//0调用的in同类型
System.out.println((1.0/3)*3);//1.0调用double类型
System.out.println((1/3)*3F);//0.0
System.out.println((1/3F)*3);//1.0
经常使用数据类型:
1.boolean:true/false(只有两个可选值)
Int i=true;在java中是不成立的
2.String: “*****”
转义字符: “\n” 换行
“\\”输出“\”(斜杠)
“ \” ”输出“ ” ”(引号)
System.out.println("个人名字叫\"晓伟\"\\n");
如何显示“\n”字符呢? 能够输入“\\n”便可。
int:最大值:Integer.MAX_VALUE;
最小值:Integer.MIN_VALUE;
int转换为String:Integer.toString(i);
或者为:String.valueOf(i);
String转换为int:Integer.parseInt(“33”);
显式类型转换仅限整数、小数类型以内。
double转换为String:Double.toString(d);
String转换为double:Double.parseDouble(s);
char与String区别:单引号(char类型),一个字符
双引号(String类型),一堆字符组成,核心“\0”做为字符串结束标志。
基础运算符:
1.运算符就是加(+)、减(-)、乘(*)、除(/)等符号
2.求余数运算符(%):5%4为一、5%5为0、22%7为1.
3.自增(++):是对一个变量进行自增运算()
4.自减(--):
System.out.println("abc"+5+6);//结果为“abc56”
“abc”是字符串,因此+5仍然为字符串,再+6还是字符串
System.out.println(5+6+"abc");//结果为“11abc”
5+6是整型数据,结果为11,再与字符串拼接在一块儿
System.out.println("abc"+(5+6));//结果为“abc11”
总结:
Java中表达式从左向右扫描进行扫描运算,一旦赶上一个字符串,以后的运算就变成字符串了。
赋值运算符:
1. int i=5;
应该理解为:“声明int类型变量i,而且把5赋值给i”。
扩展知识:
当你看到“145”这个数时,你会不加思考当即就知道是“一百四十五”,可是在计算机编程人员看来,如果学习了二进制和十六进制的话,可能就不只仅是一个数,而是做为一个数的代码。
平时咱们使用最多的是十进制:
概括起来能够总结以下规律:
①十进制使用数字 0-9
②位是10的幂:一、十、100、1000等。
③若是第三位是100,那么用两位可表示最大数为99.
推广到通常状况:
用n位数能够表示从0到(-1)的数。所以用三位数能够表示从0到即0到999.
数制转换问题
1.经常使用的数制
十进制 0-9
八进制 0-7
二进制 0-1
十六进制 0-F
2.十进制 转 各个进制
方法 : 除以基数取余反向
3. 2进制 8进制 16进制 转十进制
二进制
___________________________
2^3 2^2 2^1 2^0
1 0 0 1 X
=8+ 1 = 9
八进制
———————————
8^1 8^0
1 7
=1*8 + 7*1 = 15
十六进制相似。
4.二进制转 十六进制 八进制
二转八
三位一组 结果并在一块儿
二转十六
四位一组 结果合并在一块儿
5. 整数在内存中的存储,采用二进制
符号位
原码 正数 0
负数 1
反码 正数 和原码相同
负数 在原码基础上,符号位不变,各个位取反
补码 正数 和源码相同
负数 在反码基础上,符号位不变,末位 +1
案例↓↓↓↓↓↓
————————————————————————————
原码 反码 补码
5 0000 0101 0000 0101 0000 0101
-5 1000 0101 1111 1010 1111 1011
6. 机器数 和 真值
用“+”、“-”号加绝对值来表示数值的大小,用这种形式表示的数值在计算机中称为“真值”
符号数码化后,二进制数的最高位“0”表示正号,“1”表示负号,用这种形式表示的数值在计算机中称为“机器数”
机器数中小数点隐含不占位
机器数 有符号 纯整数 点在最低位以后
纯小数 点在符号位以后,最高位以前。
无符号 纯整数 点在最低位以后
纯小数 点在最高位以前
7.小数的存储
计算机中小数以二进制(浮点数)形式存储。
首先是一个十进制小数形式,转化成二进制的计算案例。
————————————————————————————————
0.8125 转换成二进制
其实这种状况是赶巧了获得一个确切的值。
————————————————————————————————
但对于某些特殊状况是这样的
8.浮点数产生偏差的缘由
有两钟状况,会产生偏差
1)以二进制保存浮点数,因此一些本来有限位的小数,按照上面方法运算之后,可能变成一个无限循环的小数。
————————————————————————————————
(十进制)0.9转成2进制是无限循环小数0.1110011001100110011...
————————————————————————————————
2)计算机保存浮点数的精度有限,例如float能够保留十进制最多7位(二进制23位)有效数字,double 能够保留十进制15~16位(二进制52位)有效数字。那有效数字之后的就被忽略了。
为何用二进制?
二进制的幂能够与计算机所表达的事物清楚地对应起来。计算机实际根本不知道什么字母、数字、指令或程序。在它的内核只是一些电路,在某个给定的结点要么有不少电,要么几乎没有电。为了使逻辑保持清晰,工程师将其简化为“是”或“否”。“是”与“否”、或者是“真”与“假”均可以由1或0表示。按照约定,1表明“是”或“真”,但这仅仅是一种约定;这样表示“否”或“真”也一样容易。
计算机用0和1的模式给它们作的任何事情进行编码。机器指令被编码成一系列的1和0,并经过电路翻译。