JAVA语言是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。它是一种面向Internet的编程语言。并且随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。是简单易学,完全面向对象,安全可靠,与平台(指操作系统)无关的编程语言。
Java的三种技术架构:
JAVAEE(企业版):Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;
JAVASE(标准版):Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;
JAVAME(小型版):Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;
1.简单性 Java语言的简单性主要体现在以下三个方面:
(1).Java的风格类似于C++,因而C++程序员是非常熟悉的。
(2).Java摒弃了C++中容易引发程序错误的地方,如指针和内存管理。
(3).Java提供了丰富的类库。
2.面向对象性 面向对象可以说是Java最重要的特性。Java语言的设计完全是面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。Java支持静态和动态风格的代码继承及重用。
3.分布式 Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。
4.健壮性 Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。Java提供Null指针检测数组边界检测异常出口字节代码校验。
5.结构中立 另外,为了建立Java作为网络的一个整体,Java将它的程序编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都能执行这种中间代码。
6.安全性 Java的安全性可从两个方面得到保证。一方面,在Java语言里,象指针和释放内存等C++功能被删除,避免了非法内存操作。另一方面,当Java用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来,使它更安全。Java语言在你的机器上执行前,要经过很多次的测试。它经过代码校验,检查代码段的格式,检测指针操作,对象操作是否过分以及试图改变一个对象的类型。
7.可移植的(也就是跨平台性,这是java语言很主要的特点) 同体系结构无关的特性使得Java应用程序可以在配备了Java解释器和运行环境的任何计算机系统上运行,这成为Java应用软件便于移植的良好基础。
8.解释的 Java解释器(运行系统)能直接运行目标代码指令。链接程序通常比编译程序所需资源少,所以程序员可以在创建源程序上花上更多的时间。
9.高性能 如果解释器速度不慢,Java可以在运行时直接将目标代码翻译成机器指令。Sun用直接解释器一秒钟内可调用300,000个过程。翻译目标代码的速度与C/C++的性能没什么区别。
10.多线程 Java的多线程功能使得在一个程序里可同时执行多个小任务。线程--有时也称小进程--是一个大进程里分出来的小的独立的进程。因为Java实现的多线程技术,所以比C和C++更键壮。多线程带来的更大的好处是更好的交互性能和实时控制性能。
11.动态 Java的动态特性是其面向对象设计方法的发展。它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的。
因为java语言的跨平台性挺主要的,所以把它拿出来单独说一下。
什么是跨平台性?
通过Java语言编写的应用程序在不同的系统平台上都可以运行。
原理是什么呢?
只要在需要运行java应用程序的操作系统上,先安装一个java虚拟机(JVM Java Virtual Machine)即可。由JVM来负责java在该系统中的运行。
图解:
在环境搭建之前,我们要先知道什么是JDK,什么是JRE。
1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
之后就是配置环境变量了
3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1):永久配置方式:JAVA_HOME=安装路径
path=%JAVA_HOME%\bin
2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
临时配置是在dos里配置 这里的改变只是在当前dos窗口有效。如果用start开一个新窗口 它就会延续上一个窗口的配置。
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置(可以在任意目录下运行class文件):
1):永久配置方式:classpath=.;c:\;e:\ 找完c盘找e盘
2):临时配置方式:set classpath=.;c:\;e:\ 点代表当前路径 先在当前目录下找,找不到就到path里找
3) :清空临时配置:set classpath=
注意:在定义classpath环境变量时,需要注意的情况如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;如果指定了classpath,那么会在指定的目录下查找要运行的类文件。还会在当前目录找吗?
两种情况:
1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
我们在写代码时要有明确的思路和步骤。
1,明确需求。我要做什么?
2,分析思路。我要怎么做? 思路1、2、3。
3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。
4,代码实现。用具体的java语言代码把思路体现出来。
1)关键字:其实就是某种语言赋予了特殊含义的单词。
class:是java中的关键字,用于定义类,java语言的程序代码都需要定义在类中。class都小写才是java中的关键字。
2)标识符:其实就是在程序中自定义的名词。如类名、变量名、函数名。
命名可以用a~z,A~Z字母、0~9数字、_下划线、$美元符号。 但数字不能当首字母,不能使用关键字命名。
3)常量:是在程序中不会变化的数据。
常量的分类:1.整数常量 2.小数常量 3.布尔型常量 4.字符常量 5.字符串常量 6.null常量
4)变量:其实就是内存中的一个存储空间,用于存储常量数据。就是将不确定的数据进行存储。
也就是需要在内存中开辟一个空间。开辟空间就是通过明确数据类型,变量名称,数据来完成的。
作用: 方便于运算。就是将不确定的数据进行存储。因为有些数据是不确定的,所以确定该数据的名词和存储空间。
特点: 变量空间可以重复使用。
什么时候定义变量?只要数据不确定的时候,就定义变量。
开辟变量空间的要素有哪些?
1,这个空间要存储什么数据?数据类型。
2,这个空间叫什么名字啊?变量名称。
3,这个空间的第一次的数据是什么? 变量的初始化值。
所以,定义变量的格式就是:数据类型 变量名称= 变量的初始化值;
变量命名法则
1.变量中只能出现字母、数字、下划线和$符号
2.首字母不能以数字开头,也就是说只能以字母、下划线和$符号开头
3.其他语言一般不支持$,java支持,并且支持以$开头
4.变量名不能是Java中的关键字
变量声明
语法:数据类型 标识符[=值][,标识符[=值]。。。]; 例: int b=3; int a=1,b=2;
变量的作用域和生存期:
变量的作用域:作用域从变量定义的位置开始,到该变量所在的那对大括号结束。
生命周期:变量从定义的位置开始就在内存中活了,到达它所在的作用域的时候就在内存中消失了。
数据类型:
1.基本数据类型(也叫原始数据类型):byte、short、int、long、float、double、char、boolean
2.引用数据类型: 数组、类、接口。(String也是引用类型)
级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double
自动类型转换:从低级别到高级别,系统自动转的;
强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;
例:int i=10; byte b=(byte)i; double d=63.5; char c=(char)d;
byte:使用一个八位来表示的,就是八个二进制来表示一个字节,取值是-128到+127(-2^(7)到+2^(7)-1) ^:代表平方
short:取值是-2^(15)到+2^(15)-1 就是-32768到+32767 int:-2^(31)到+2(31)-1 也就是-2147483 648到+2147483 648
5)注释:java注解 内置注解。详见黑马程序员_java注释
6)运算符:运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。详见黑马程序员_java运算符
7)语句 :详见黑马程序员_java判断与循环语句
8)函数(也叫方法):函数就是定义在类中的具有特定功能的一段独立小程序函数也称为方法。
函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,....)
{
执行语句;
return 返回值;
}
返回值类型:函数运行后的结果的数据类型
参数类型:是形式参数的数据类型
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数
实际参数:传递给形式参数的具体数值
return:用于结束函数
返回值:该值会返回给调用者
当函数没有具体的返回值时,返回的返回值类型用void关键字表示。
如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。
return的作用:结束函数。结束功能。
函数的作用:
1)、用于定义功能。
2)、用于封装代码提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
主函数:保证该类的独立运行。因为它是程序的入口被jvm调用。
为什么定义函数名呢?
1)、为了对该功能进行标示,方便于调用。
2)、为了通过名称就可以明确函数的功能,为了增加代码的阅读性。
如何定义一个函数?
1.既然函数是一个独立的功能,那么该功能的运算结果是什么先明确,因为这是在明确函数的返回值类型。
2.在明确在定义该功能的过程中是否需要未知的内容参与运算,因为是在明确函数的参数列表(参数的类型和参数的个数)。
函数的重载(overload) 重载和参数列表有关系
概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。
好处:方便阅读,优化了程序设计
用的时候:当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
示例:
//返回两个整数的和
int add(int x,int y){return x+y;}
//返回三个整数的和
int add(int x,int y,int z){return x+y+z;}
参数是有顺序的。
//返回两个小数的和
double add(double x,double y){return x+y;}
函数的重写(也叫覆盖Overrid)
重写的形成:通常,派生类(子类)继承基类(父类)的方法,因此,在调用对象继承方法的时候,调用和执行的是基类的实现。但是,有时需要对派生类中的继承方法有不同的实现,所以就出现了重写。
规则:
public class Zi extends Fu//子类继承了父类
{
public void test()
{
System.out.println("zi");
}
}
这就重写了父类中的test方法。
9)数组:所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字成为数组名,编号成为下标。详见黑马程序员_java数组的应用
包结构与类名前缀
为了便于管理Java开发的应用,Java开发的应用包命名要求带有前缀com,采用“com.包名.子功能包名”的形式。包名和子功能包名要求具有实际的意义。
类命名
类名首字母应大写,字段、方法以及对象的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且将中间单词的首字母大写。
小知识:
内存结构
Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同
区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
java分了5片内存。
1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈:存储的都是局部变量 ( 函数中定义的变量,函数上的参数,语句中的变量 );
只要数据运算完成所在的区域结束,该数据就会被释放。
堆:用于存储数组和对象,也就是实体。实体就是用于封装多个数据的。
堆内存的特点:
1:每一个实体都有内存首地址值。
2:堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。
3:垃圾回收机制。
总结:
在总结了这篇blog后我又从新深刻的了解java这门语言,对它的结构也都有了新的了解。它真的很强大,很不错,我很喜欢java。它的结构很明确,从命名到它的组成,都有明确的规定。
函数的最基本体现:就是提高复用性。
最后,一定要注意命名规范:
java严格区分大小写
包名:全小写
类名接口名:所有单词首字母大写
变量名和函数名:第一个单词首字母小写,后面的首字母大写
常量名:所有字母都大写,多单词每个单词用下划线连接