------------------------------------------------------1、如何学习--------------------------------------------------------------
1、培养高手是培养高手的学习习惯。
2、Java
企业级服务器端开发
Android开发
Object-C(IOS)
C#(.NET平台)
PHP
C++
C
……
------------------------------------------------------2计算机语言发展------------------------------------------------------
所有计算机都是基于冯诺依曼体系结构
第一台计算机诞生于费城
1、计算机语言发展史(向着人更加容易使用的方向发展)
一代:机器语言
二代:汇编语言
三代:高级语言
面向过程:C、Fortran、COBOL、Pascal、ADA
面向对象:C++、Java(跨平台)、C#
2、java历史:
3.Java核心优势:跨平台
4.java三大版本的区别
JavaEE:定位于服务器端的应用
JavaSE:定位于个人计算机上的应用
JavaME:定位于消费性电子产品的应用
----------------------------------------------------------------------------------3JDK--------------------------------------------------
1.JDK、JRE、JVM的区别:
JDK:JavaDevelopment Kit Java开发工具包
JRE:JavaRuntime Environment Java运行时环境
JVM:JavaVirtual Machine Java虚拟机
JDK(JRE(JVM))
2.JDK的下载安装:
3.环境变量配置:
JAVA_HOME:C:\Program Files\Java\jdk1.6.0_14
path(执行dos命令,系统会在path指定的路径中寻找该命令对应的可执行文件)
将"%JAVA_HOME%\bin"增加到path中;多个目录用分号隔开
classpath
JDK5.0以上版本,可以不对其进行配置!
4.测试安装成功:
JDK安装到C盘就可以,不会影响电脑速度
-----------------------------------------------------4第一个程序----------------------------------
安装目录、开发目录尽量用英文。
1.好的文本编辑器:Notepad++、UltraEdit、EditPlus
2.第一个程序:
public class Welcome{
public static void main(String[] args){ //args即arguement即参数的意思
System.out.println("Hello World");
}
}
3.Dos命令cd的意思:change directory
-------------------------------5 helloworld深化_文本编辑器的使用_注释--------------------------------
IDE集成开发环境(Integrated Development Environment)
JBuilder(基本淘汰)
Eclipse(重点)
NetBeans
Java区分大小写
~~~~~~~~~
注意:
不是一个Java文件对应一个class,一个Java文件可有多个class类,但是一个类对应一个字节码文件(即.class文件)
若有个class前面加了public,则此class的类名必须和文件名一致,public类只能有一个,其他类可以有多个。
/**/注释不可嵌套
~~~~~~~~~
常用dos命令
cd:进入一个目录,changedirectory
cd..:
dir:查看目录里的内容
上下键:查找敲过的命令
Tab键:命令自动补齐
--------------------------------------------------------------------6标识符---------------------------------------------
1.标识符
/*
*测试标识符的写法
*/
public class Welcome{
public static void main(String[] args ){
int $abc=3;
int _123=3;
//int 123abc=6;//标识符首字母不能以数字开头
//int abc#=3;//标识符不能包含除了字母、数字、下划线、$之外的其他字符
//int class=3;//不能用关键字来命名
int 尚学堂=10;//java内部采用Unicode字符集,universal,两个字节表示一个字符,1字节=8位,2的8次=256,2个字节=16,2的16次=65536,能表示6万多个字
}
}
2.字符集简(unicode和GBK)
ISO8859-1 西欧字符集(一个字节表示一个字符)
BIG5 台湾的大五码,表示繁体汉字
GB2312 大陆使用最早、最广的简体中文字符集
GBK GB2312的扩展,可以表示繁体中文
GB18030 最新GBK的扩展,中国所有非手持/嵌入式计算机系统的强制实施标准,可以表示汉字、维吾尔文、藏文等中华民族字符
Unicode 国际通用字符集,(两个字节表示一个字符)-->UTF-8、UTF-16(变长的,英文1个字节,阿拉伯文2个字节,中文3个字节)
3.各种字符集的关系
GB18030(GBk(GB2312(ISO8859-1)))
BIG5(ISO8859-1)
Unicode(ISO**59-1) GB18030与BIG5与Unicode不兼容
-------------------------------------------------------------7 整数---------------------------------------------------------
java是一种强类型语言,每个变量都必须声明其类型(因为java运用太广,从服务器到手机,跨很多平台,有些对内存资源要求比较苛刻,要用少字节的类型,有的地方无所谓,如服务器环境)
1.数据类型:
1.基本数据类型(8种)
1.1数值型
1.1.1整数类型(byte,short,int,long)
1.1.2浮点类型(float,double)
1.2字符型(char)
1.3布尔型(boolean)
2.引用数据类型
2.1类(class)
2.2接口(interface)
2.3数组
byte 占1个字节 表示范围:-128~127
short 2 -32768~32767(大约正负3万)
int 4 -(2的31次)~(2的31次-1)(大约正负21亿)
long 8 -(2的63次)~(2的63次-1)
2.进制转换_编程中的L问题
public class TestDataType{
public static void main(String[] args){
int a=10; //默认都是表示十进制的,
int a2=010; //定义八进制数,八进制首字符为0,输出结果:8
int a3=0x10; //定义十六进制数,输出结果:16
int a3=0xf; //定义十六进制数,输出结果:15
System.out.println(a);
byte b=200;
System.out.println(b);//报错,200不能用byte来表示,超范围了
System.out.println(Integer.toBinaryString(a));//将a转为二进制数,输出结果:1010
System.out.println(Integer.toOctalString(a));//将a转为八进制数,输出结果:12
System.out.println(Integer.toHexString(a));//将a转为进制数,输出结果:a
int a5=10;//Java整型常熟默认为int型,即已定义a5为int型,而数字10前面什么都没写,即默认为int型,a5与10类型匹配,不会出出错
long a6=200;//200没有超过long的表示范围
byte b2=100;//若果数据的大小没有超过byte/short/char的表述范围,则可以自动转型
//byte b2=200;//超过范围,报错,丢失精度
long a7=11111111323;//报错,11111111323超出了long的表示范围
long a7=11111111323L;//在11111111323后加L(大写小写都可,但小写容易看成数字1)即可把此数转为long类型的数据(默认为Int)
}
}
---------------------------------------------------------------8 浮点型-------------------------------------------------------
1,浮点数浮
float 4字节
double 8字节
public class TestFloatType{
public static void main(String[] args){
double d=3.14//整形默认为int,浮点型默认为double即默认3.14为double,且已定义d为double,
float f=6.26F //将6.26转为float,即6,。26用4个字节表示,变量f用4个字节表示,不会出错
double d2=314e-2;//采用科学技术方的写法
System.out.println(d2);//输出结果:3.14
float f1=0.1F;
double d3=1.0/10;
System.out.println(f1==d3); //false,浮点数在内存里表示是有误差的,内存里可能一个表示是0.1,另一个是0.09999999,浮点数算比较运算时尽量避免使用比较运算符
}
}
2.浮点数误差问题
int型表示范围大约正负21亿,float表示范围正负(3.403乘以10的38次)为何同为4个字节表示,差距这么大呢?
int用4个字节表示的-(2的31次)~(2的31次-1)其中的每个数都是精确表示的
而float表示的正负(3.403乘以10的38次)这么多数(近似无穷多个),不能精确表示所有小数,有舍入误差
浮点数存在舍入误差,很多数字不能精确表示,如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类
Long8个字节,可以表示很大的整数,但若超了范围,可用另一个类BigInteger
----------------------------------------------------------------9 char与double----------------------------------------------------
char是在0~65535范围,运算时直接当做整数来运算,可以把0~65535之间的整数直接转型为char。
public class TestFloatType{
public static void main(String[] args){
char c1='a';
char c2='上';//java内部采用unicode字符集(通用字符集),2个字节,表示65536个字符(0~65535)
char c3='\n';
System.out.println(c1);
System.out.println(c3);
System.out.println(c2);
char c4='a';
int i=c4+2;
System.out.println(i);//输出结果:99;a在ASCII表中对应97
char c5=i;//报错,可能损失精度
char c5=(char)i;//强制转型
System.out.println(c5);
//循环打印a-z
for(int j=0;j<26;j++){
char temp=(char)(c4+j);
System.out.println(temp);
}
//java里的字符串,是定义成String类了
String str="ahuisaxcuiashxuas";
System.out.println("\n"+str);
boolean b=true;//false
if(true){
System.out.println("true");
}
if(b){ //if(b==true)这样写不好
System.out.println("true");
}
}
}
-------------------------------------------------10 类型转换--------------------------------------------------------------------------------
1.基本数据类型自动转换
容量小的数据类型可自动转化为容量大的数据类型。(容量不是指字节数,而是指表述的范围。)
特例:
可以将整型常量直接赋给byte,short,char等类型变量,而不需要强制类型转换,只要不超过其表数范围。
short b=12;//合法
short b=1234567;//非法
2.强制转型
//测试自动转型和强制转型
public class TestCastType{
public static void main(String[] args){
/*测试自动转型*/
byte b=123;//byte的范围-128~127,整数123在byte的表示范围内,可以自动转型
//byte b2=300;//报错,300不在-128~127之间
//char c=-3;//报错,-3不在0~65535之间
char c2='a';
int i=c2;//char自动转为int
long d01=123422;
float f=d01;//long可自动转为float,float4个字节,long8个字节,但是否可自动转换看的是表示范围而不是字节数。
/*测试强制转型*/
int i2=100;
char c3=(char)i2;
System.out.println(c3);
int i3=-100;
char c4=(char)i3;//-100超过char的表数范围,所以转换成完全不同的值。无意义的值!
System.out.println(c4);
}
}
类型提升问题