1 java语言的特性
1.1 简单性
Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外,Java也适合于在小型机上运行,它的基本解释器及类的支持只有40KB左右,加上标准类库和线程的支持也只有215KB左右。库和线程的支持也只有215KB左右。
1.2 面向对象
Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。
1.3 分布性
Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其它对象。
1.4 鲁棒性
Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制,在编译时,Java提示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。
1.5 安全性
用于网络、分布环境下的Java必须要防止病毒的入侵。Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用"特洛伊"木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
1.6 体系结构中立
Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。
1.7可移植性
与平台无关的特性使Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有可移植性。
1.8 解释执行
Java解释器直接对Java字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。
1.9高性能
和其它解释执行的语言如BASIC、TCL不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。
1.10 多线程
多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
1.11 动态性
Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。
2 jdk环境
java的jdk又称Javase,是Sun公司的产品,由于Sun公司已被Oracle公司收购,因此下载jdk需要到Oracle公司的官网上下。
要运行java程序必须要配置jdk的环境变量,jdk需要三个变量,步骤如下:
在“计算机”图标上右击,选择属性命令;在“高级系统设置”上选择“环境变量”。
第一个新建一个JAVA_HOME,变量值填写jdk安装的绝对路径;
第二个为path,编辑并在后面添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
第三个为新建 CLASSPATH 变量变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)。
3 java主类结构
java语言是面向对象的程序设计语言,java程序组成单元是类,类中又包含属性与方法两部分;每一个应用程序都需要一个main()方法,含有main方法的类称为主类。
比喻在eclipse中写一个简单的程序:
package com.yc.page1; public class Demo { public static void main(String[] args) { System.out.println("Hello world"); } }
在eclipse中写程序,需要依次创建java project,包com.yc.page1和类Demo;main()方法是程序执行的开始。
注意:代码中所有的标点符号是英文字符,不可以在中文输入状态下输入标点符号。
文件名必须与类名Demo同名,还要注意大小写,java是一种强类型语言,严格区分大小写。
4 java语法
4.1 注释
java有三种注释;(1)// 单行注释;(2)/**/ 多行注释 (3)/** */文档注释
4.2 标识符
java中所有命名的位置用的都是标识符。
(1)命名规则
只能以数字,下划线(_),英文字母和美元符($)组成,但不能以数字开头。
严格区分大小写
不能用java的关键字,如public、class、try、catch、extends等等,到后面深入就清楚了。
(2)命名规范
见名知意即可不要过长
camel 驼峰原则(规则:变量名或函数名的每一个单词的首字母要大写,第一个单词的字母可大写或者小写
效果:这样一个变量或者函数名看起来就像驼峰一样起起伏伏,可以提高代码的可读性。如username要写作userName或者UserName)
4.3 常量与变量
(1)常量
定义:在程序运行过程中一直不会改变的量称为常量,通常也被称为“final常量”。常量在整个过程中,只能被赋值一次。在为所有对象共享值时,常量是十分有用的。
语法:final 数据类型 常量名=值
java中的常量有:整数常量(0,-127,+127)、浮点数常量(3.14,0.5)、字符常量(用单引号引起来的单个字符,‘a’,‘1’)、字符串常量(用双引号引起来的内容(多个字符),“abc”,“123”)、布尔常量(true、false)、空常量null(表示对象的引用为空)。
(2)变量
定义:在程序的运行期间,随时会产生一些临时数据,应用程序会把这些临时数据到保存在一些内存单元中,每个内存单元都用一个标识符进行标识,这些内存单元被称为变量。定义的标识符即为变量名,内存单元中存储的数据即为变量值。
变量创建的三要素:1.声明数据的类型(如int,double,string等);
2.变量名(符合标识符命名规则即可);
3.数据值。
变量使用的注意事项:1.变量定义时,可以不赋值,使用时再赋值,不赋值不可以使用;
2.变量不可以重复定义
3.变量使用的时候有作用域的限制,下面代码的i值超越了范围,故而报错。
package com.yc.page1; public class Demo { public static void main(String[] args) { int i=1; } System.out.priontln(i); }
4.4 变量的有限范围
由于变量被定义后只是暂时存在内存中,等到程序执行到某一个点时,该变量就会被释放掉,也就是说变量有它的生命周期。因此,变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域,编译会出错。在程序中,一般会根据变量的“有效范围”将变量分为“成员变量”和“局部变量”。
4.4.1 成员变量
在类体中定义的变量被称为成员变量,成员变量在整个类中都有效。类的成员变量又可分为两种,即静态变量和实例变量。
public class Demo { int x=10; static int y=50; }
其中x为实例变量,y为静态变量(也称类变量)。在此需要注意静态变量只能存在于类中,不可以在方法内定义静态变量(包括main方法),否则出现编译错误。方法只能对静态变量进行操作。静态变量的本意是为了让所有的对象共享这个变量,其有效范围可以跨类,甚至达到整个应用程序之内。对于静态变量,除了能在定义它的类内存取,还能直接以“类名.静态变量”的方式在其他类内使用。
4.4.2 局部变量
在类的方法体中定义的变量称为局部变量。局部变量只在当前代码块中有效。
在类的方法中声明的变量,包括方法的参数都属于局部变量。局部变量只在当前定义的方法内有效,不能用于其他方法体中。局部变量的生命周期取决于反复,当方法被调用时,java虚拟机会为局部变量分配内存空间,当该方法执行完毕后,会释放局部变量占用的内存空间,局部变量也随之销毁。
局部变量可与成员变量的名字相同,此时成员变量会被隐藏,即这个成员变量在此方法中暂时失效。
public class Demo { static int x=10; public static void main(String[] args) { int x=20; System.out.println(x); } }
运行结果为:20
总结: 成员变量与局部变量的区别:
1 位置区别
成员变量存在于方法外,定义在类中。局部变量在方法内,语句内。
2 作用域不同
成员变量作用于整个类,局部变量只能在指定的方法内使用。
3 默认值不同
成员变量有自己的默认值(初始化),局部变量没有默认值,不赋值就不能使用。
4 内存位置不同
成员变量跟随对象进入堆内存中,局部变量跟随自己的方法进入栈内存中。
5 生命周期不同
成员变量需要JVM清理才能消亡,而局部变量跟随方法,方法出栈即消亡。
4.5 基本数据类型
java有8种基本数据类型来存储数值、字符和布尔值。
整数类型:short、byte、int、long
浮点类型:float、double
字符类型:char
布尔类型:boolean
(1)整数类型
整数类型有三种方式:即十进制,八进制(以0开头),十六进制(以0x或0X开头)
整型数据根据它所占内存大小的不同,可分为byte、short、int、long4种类型。它们具有不同的取值范围
注意:定义以上4种类型的变量时,要注意取值范围,超出范围会报错。
自动转换:取值范围小的可以自动转换成取值范围大的类型。
强制转换:取值范围大的需要强制转换成取值范围小的类型。
(2)浮点类型
浮点类型表示有小数部分的数字。java语言中将浮点类型分为单精度浮点类型和双精度浮点类型。在默认情况下小数都被看做double型。若使用float型小数,需要在小数后加f或F。
(3)字符类型(char)
java中char类型占2个字节、16位可以存放汉子,字母和数字占一个字节,一个字节8位,中文占2个字节,16位。
(4)布尔类型
布尔类型又称为逻辑类型,通过关键字boolean类定义,只有true和false两个值,分别代表逻辑中的真和假,布尔值不能与整数类进行转换。布尔类型通常用在流程控制中作为判断条件。
4.6 运算符
(1)算术运算符
个人觉得注意两点:
1 取模的操作
14%3=2,14%-3=2,-14%3=-2 ,-14%-3=-2,的结果是不一样;即负号在分子上结果中一定有负号。
2 ++和--
i++ 先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1,所以结果是a==1
++i 先运算在赋值,例如 a=++i,先运算i=i+1,后赋值a=i,所以结果是a==2
(2)比较运算符
(3)逻辑运算符
(4)位运算符(用于二进制运输)
<<:左移几位就是该数乘以2的几次方
>>:右移几位就除以2的几次幂,对于高位出现的空位,原来高位是什么,用什么补空位(即负数不会变正数)。
注意:可以产生boolean类型结果的运算符有两种,逻辑运算符和关系运算符。
(5)三元运算符
格式:布尔表达式?结果1:结果2
如果表达式为真,结果为1,如果表达式为假,结果为2
原文:https://www.cnblogs.com/bi14/p/11693755.html