一、Java语言简介

JAVA是一种面向对象的程序设计语言,为不同级别的开发划分为J2SE、J2EE(Java Web)、J2WE三种平台,可以进行桌面应用编程、WEB客户端编程、WEB服务器编程、手机编程(J2ME或者现在的Android系统上开发应用程序)、机器人编程等。

1、Java语言的发展

计算机语言向着功能更加强大、人更易使用的方向发展。编程语言的发展时期可以划分为机器语言、汇编语言(符号语言)、面向过程、面向对象以及SQL语言。      

JAVA的前身是有SUN公司的James Gosling负责的Green项目,目的是打造一个分布式的、可以在各种消费类电子产品(如电视机顶盒、微波炉)使用的系统架构,这就要求编程语言要具有中立性、跨平台性,但很遗憾消费类电子产品并没有高速的发展起来。

随着互联网爆发式的发展,人们急需一种具有跨平台特性的语言在各种平台上运行,而SUN此时发布的JDK1.2正符合这种需求。使用JAVA编写的applet程序给了90年代的人们极大的震撼,于是JAVA迎来了他的黄金时代!

  

2、Java语言的特性

(1)简单性、安全性

JAVA属于类C语言,但去除了C/C++的中关于头文件、指针、结构、联合、操作符重载、虚基类等操作,不仅简化了语法,还提高了JAVA语言的安全性,使Java适合于网络/分布式环境开发,并可以构建防病毒,防篡改的系统。

(2)可移植性强【核心特性】

JAVA语言具有很强的跨平台特性,可以运行于不同的操作系统上,实现“一次编译、处处执行”。如:JAVA的int类型永远都是4B,不像C/C++可能是4B或2B(具体是由编译器厂商规定)。

(3)健壮性

Java是一种健壮的语言,吸收了C/C++ 语言的优点,去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)保证每次对内存的访问都是合法的。此外,还使用异常机制对例外进行处理。

(4)运行效率高

JIT(JUST IN TIME)即时编译,可以将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样可以将JAVA程序的执行效率大大提高,某些代码的执行效率甚至可以接近C++的执行效率(编译代码)。

(5)分布式

JAVA是为Internet的分布式环境设计的,因为他能够处理TCP/IP协议。事实上,通过URL访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,remote method Invocation),使程序能够通过网络调用方法。

(6)动态性

动态性是一个非常重要的特性,反射机制可以在需要时将某些代码添加到正在运行的程序中。Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的

(7)多线程

多线程的使用可以带来更好的交互响应和实时行为。多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。

3、JDK与IDE

(1)JDK与JRE

JDK(JAVA Development Kit)不仅包含java运行时环境JRE(JAVA Runtime Environment)的超集,还为开发者还提供了javac、java、javadoc、jar等编译器及其他一些开发工具。

Java Runtime Environment (JRE) 包含执行字节码文件的JVM(JAVA Virtual Machine)、库函数、运行Java应用程序和Applet所必须文件。java运行环境具有加载代码(class loader)、校验代码(bytecode verifier )和 执行代码(runtime interpreter)等功能。

(2)配置环境变量   

配置系统环境变量Path:执行dos命令时,系统会在path(静态+临时)指定的路径中寻找该命令的执行文件。需要在最前面追加【.;% JAVA_HOME %\bin;】。其中:JAVA_HOME是jdk安装目录;分号用于将多个目录分开,目录值中不能加分号;点号表示当前目录。

配置CLASSPATH路径:如果使用jdk1.5以上就不需要配置这个环境变量!JRE会自动搜索当前路径下的类文件及相关jar文件。

运行cmd输入命令【java  –version】,若出现如下结果,则通过表明JDK安装成功。

(3)IDE开发环境


注:eclipse快捷键:① sysout + (alt +/)输出System.out.println()

4、JVM虚拟机

JAVA的跨平台实现的核心是为不同的操作系统提供不同的JVM。JVM屏蔽了底层运行平台的差别,为上层提供了统一的字节码(byte-code代码是与平台无关的是虚拟机的机器指令)执行环境,实现了“一次编译,随处运行”。

JVM(JAVA Virtual Machine)一种规范,是指在一台计算机上由软件或硬件模拟的用于虚拟执行字节码文件的计算机,类似一个小巧而高效的CPU。定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域等。IBM、SUN、BEA、Intel等都有为不同的操作系统提供不同的JVM或java芯片(正在研发),甚至自己也可以根据JVM规范编写一个JVM。

JVM负责将java字节码Interpreter(解释)运行,边解释边运行,这样速度就会受到一定的影响。JAVA提供了另一种解释运行的方法JIT(just in time,即时编译),就是由代码生成器将“热点’”字节码一次性解释转换成可以较高速度的运行在特定平台上的本地机器码,并将结果缓存起来,下次直接从内存中调,这样就大大提高了执行JAVA代码的效率。这样就实现了跨平台、可移植的功能。

二、运算符与表达式

1、基本字符集

最早的字符集是ISO8859-1(1字节)用于表示西欧字符集,随着计算机的发展,台湾使用BIG5(大五码)表示繁体汉字;大陆使用GB2312简体中文字符集,GBK是GB2312的扩展,可以表示繁体中文,GB18030是最新的GBK扩展,可以表示汉字‘维吾尔文、藏文等。  

Unicode(2字节)是国际通用的字符集,可以表示各国所有常用的字符。UTF-8是变长字符串,存储时仍采用2B,但在网络数据传输时,对于西欧字符占1B,汉字占2B;UTF-16目前未出。

JAVA采用的时Unicode字符集(而非通常的ASCII字符集)。

2、关键字

JAVA关键字又称保留字,是JAVA语言内部保留使用的标识符,如:class


3、标识符

JAVA标识符以 下划线 和 美元符 $开头,由下划线、美元符$、数字组成。JAVA标识符大小写敏感、长度无限制,但不可以与关键字相同。建议在命名标识符的时,采用 “见名知意’‘和“驼峰原则”、不使用汉字定义标识符。

  1 int   1a;        //不能以数字卡头
2 int a#; //不能含有特非法字符
3 int class; // 不能使用关键字命名
4 int 变量; //正确,但不建议使用汉字定义标识符
5

注释符:单行注释符://   多行注释符:/* */     javadoc:/** */

4、运算符

(1)除法运算符

(2)取余运算符

(3)自增运算符

(4)比较运算符

(5)逻辑运算符

(6)复合运算符

(7)运算符的优先级


三、基本数据类型


1、整型类型

不含小数点的数值称为整型常数,默认使用int类型存储,有以下四种表示形式:

十进制数,如:100、45、0

八进制数,要求以数字0开头,如:025

十六进制数,要求以0x或0X开头,如:0X2A

二进制数:要求以0b开头,如:0b101


注:若数值超出以上类型的表示范围,建议使用BigInteger存储数据

2、浮点类型

含有小数点的数值称为浮点数,如:2.0、2. 等 。默认使用double类型存储。

(1)使用浮点数存储数据存在着舍入误差

很多浮点数不能精确地表示,如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

  1 float f = 0.1f;        //0.1默认是double,要赋予float类型需进行强制类型转换
2 double d = 7. / 6 //会自动四舍五入,产生误差

(2)比较浮点数大小

3、字符类型

4、布尔类型

5、类型声明与定义

JAVA是一种强类型的语言,每一个变量必须声明其类型。

(1)定义long类型常量

JAVA语言整型常数默认为int类型。对于超出int可以表示范围的数,可以使用 l 或 L (建议使用大写)声明l为long型常量

  1 long a = 55; //正确,int表示的范围是21亿内
2 long b = 22_2222_2222; //error,已经超过int的存储范围,需要在后面加上 L 将整型常数定义为long类型

6、数据类型转换

byte a = 256; // error,赋值的数值不可超出类型的表示范围的

四、流程控制语句

1、main入口

  1  public class Main {
2 public static void main(String[] args) {
3 System.out.println("HelloWord");
4 }
5 }

注:① main方法是java程序的入口,具有固定的书写格式。

② java语句可以跨行编写,但每个语句都必须以分号结束。编辑器会忽略空格、换行符和注释。

③ 花括号{ }划分程序的各个部分,任何方法的代码都必须以 { 开始,以 } 结束。

④ 一个类对应一个字节码文件; public修饰的类必须与文件名保持一致    

2、条件选择语句

3、循环语句

4、跳转语句

5、函数与参数

Java笔记 - 基础语法简介的更多相关文章

  1. 《Java笔记——基础语法》

    Java笔记--基础语法       一.字符串的拼接: 例如: System.out.println(""+"");     二.换行语句: 例如: Syst ...

  2. 学习java之基础语法(三)

    学习java之基础语法(三) java运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运 ...

  3. 学习java之基础语法(一)

    学习java之基础语法(一) 基本语法 编写 Java 程序时,应注意以下几点: 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的. 类名:对于所有的类来说 ...

  4. 《Java笔记——基础知识点》

    Java笔记--基础知识点       位运算符操作的都是整型的数据. 位运算符是直接对整数的二进制进行计算. 整数不能进行逻辑运算. 运算符优先级别由高到低分别是:() > ! > 算术 ...

  5. Day03.2:Java的基础语法

    Java基础语法 注释 (注释不会被运行,仅仅作为解释或笔记提供给作者帮助回忆) 单行注释格式:// 多行注释格式: /**/ 文档注释格式:/** */ 示例图 标识符 概念:所有的组成部分都需要名 ...

  6. java的基础语法(标识符 修饰符 关键字)

    Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...

  7. 跨行程序员Java进阶--基础语法

    1.基础语法 Hello Wolrd 首先定义类 -- public class 类名 在类定义之后加上一对大括号 -- {} 在大括号中间添加一个主(main)方法/函数 -- public sta ...

  8. 动静结合?Ruby 和 Java 的基础语法比较(入门篇)

    前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...

  9. JavaScript学习笔记-基础语法、类型、变量

    基础语法.类型.变量   非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...

随机推荐

  1. Docker学习の更改Docker的目录

    一.更改虚拟磁盘的目录 虚拟机的默认存储位置是C:\Users\Administrator\.docker\machine\machines ,后期docke镜像文件会不断增加,为了给系统盘减负,最好 ...

  2. php pdo 获取数据转换为json

    php 查询语句获取数据,数据库有好多表现形式,如何拿出自己需要的数据 $raceSQL ='select id, race_name,race_code,content from je_race ' ...

  3. iOS进阶一OC对象的本质

    OC对象的本质 平时编写的Object-C代码,底层实现其实都是C/C++代码. 所以Objective-C的面向对象都是基于C/C++的数据结构实现的,OC对象内部可以容纳不同数据类型的数据,因此可 ...

  4. 结对编程收获-Core10组-PB16110698

    本周结对编程追加作业:记录收获.坦白说,我的收获多而杂,一时不知从何说起,以下试图从各方面简要谈谈. 一.编程能力收获 从编程能力方面,我收获的主要是类的设计思路和算法设计.在作业要求blog的指引下 ...

  5. 笔记:Python实现二分查找

    def search(sequence, number, lower=0, upper=None): if upper is None: upper = len(sequence) - 1 if lo ...

  6. Linux queue.h之TAILQ队列分析

    转自 这两天想看看memcached的实现,所以先学习了libevent,使用起来还是比较简单的,其实是对select/poll/kqueue等的封装,学习libevent过程中又遇到了linux下队 ...

  7. nginx 知识

    nginx如何实现高并发? 启动nginx服务器后,输入 ps -ef |grep nginx,会发现nginx有一个master进程 和若干个worker进程, 这些worker进程是平等的,都是被 ...

  8. Windows中的"簇"和Linux中的"块"是对应的

    扇区是对硬盘而言,块是对文件系统而言. 簇”又称为“分配单元” ,文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文 ...

  9. duilib教程之duilib入门简明教程6.XML配置界面

    前面那些教程都是为了让小伙伴们从win32.MFC过渡到duilib,让大家觉得duilib不是那么陌生,如果大家现在还对duilib非常陌生的话,那就说明前面的教程做得不好,请大家在下面留言,我会一 ...

  10. platform模块和ctypes模块

    一.ctypes模块 Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库的形式,即 Windows 下的 .dll 文件,或者 Linux 下的 .so 文件.先来看一下 ...