JAVA基础再回首(一)——基本概念、JAVA开发工具、JAVA基本语法
学了java,做了android应用开发,现在回想起来,真的是一路坎坷。。我在上章博客中提到了我以后的几个学习计划和目标就是把以前学的java基础和android基础在学习一遍。我相信我会有不少的收获的,大家也一样,和我一起加油努力吧。话不多说,我们来抓紧学习吧! `
一、计算机语言
- 语言
- 人类进行沟通交流的各种表达符号,方便人与人之间进行沟通与信息交换
- 计算机语言
- 人与计算机之间进行信息交流沟通的一种特殊语言
- 计算机语言中也有字符,符号等等
- 常见的计算机语言如C,C++,C#,JAVA
二、人机交互
- 软件的出现实现了人与计算机之间更好的交互。
- 交互方式
- 图形化界面:这种方式简单直观,使用者易于接受,容易上手操作。
- 命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。
三、常用DOS命令
- 打开DOS控制台的方式
- win+r—cmd–回车(这也是我最常用的一种)
- 开始–运行—cmd—回车
- 在桌面按住
Shift
键,然后右键选择在此处打开命令窗口
- 常用的DOS命令
- d: 回车 盘符切换(切换到d盘根目录)
- dir(directory):列出当前目录下的文件以及文件夹
- md (make directory) : 创建目录
- rd (remove directory): 删除目录
- cd (change directory)改变指定目录(进入指定目录)
- cd.. : 退回到上一级目录
- cd: 退回到根目录
- del (delete): 删除文件(可以删除单个文件如:123.txt,也可以删除一堆后缀名一样的文件*.txt)
- cls : (clear screen)清屏
- exit : 退出dos命令行
四、JAVA语言
JAVA是什么?
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
JAVA语言的平台版本
J2SE(Java 2 Platform Standard Edition)标准版
J2ME(Java 2 Platform Micro Edition)小型版
J2EE(Java 2 Platform Enterprise Edition)企业版JAVA语言特点
简单性、面向对象、分布式处理、解释性、可靠、安全、可移植性、高性能、多线程、动态性等。
也可以说Java是一种解释性、跨平台、通用的编程语言。- 跨平台性
- 通过Java语言编写的应用程序在不同的系统平台上都可以运行。
- 原理是什么?
- 只要在需要运行java应用程序的操作系统上,
先安装一个Java虚拟机(JVM Java Virtual Machine)即可。
由JVM来负责Java程序在该系统中的运行。
- 只要在需要运行java应用程序的操作系统上,
- 跨平台性
五、JAVA开发工具
JDK的下载与安装
通过官方网站获取JDK http://www.oracle.com ( 针对不同操作系统,下载不同的JDK版本)
- 安装
- 傻瓜式安装,下一步即可。
- 建议:安装路径不要有中文或者特殊符号如空格等。最好目录统一。
- JAVA环境变量的配置
- 这个挺简单的,就不多说了。
- 检验JDK是否安装成功,打开DOS命令窗口
- 输入
java
检验jdk - 输入
javac
检验java环境 - 输入
java -version
查看jdk版本
- 输入
- 以上是开发Java之前要做的准备,编写Java程序可以使用很多种工具
- notepad(微软操作系统自带,在DOS窗口中你可以试试)
- Notepad++
- Eclipse
六、HelloWorld
让我们来一起完成我们第一个小程序Hello World,就用notepad吧!
- 首先定义一个类
- class 类名
- 在类定义后加上一对大括号
- {}
- 在大括号中间添加一个主(main)方法/函数
- public static void main(String [] args){ }
- 在主方法的大括号中间添加一行输出语句
- System.out.println(“hello world”);
代码如下:
class HelloWorld
{
public static void main(String [] args)
{
System.out.println(“Hello World”);
}
}
运行结果:
程序解析:
首先编写java源代码程序,扩展名.java
在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件(javac 源文件名.java )
编译完成后,如果没有报错信息,输入java命令对class字节码文件进行解释运行,执行时不需要添加.class扩展名 (java HelloWorld)
得到结果:Hello World
七、JAVA基本语法
- 关键字
- 标识符
- 注释
- 常量、进制和进制转换
- 变量
- 数据类型和类型转换
- 运算符
- 语句
我们来逐个学习
1.关键字
- 关键字概述
- 被Java语言赋予特定含义的单词
- 关键字特点
- 组成关键字的字母全部小写
- 用于定义数据类型的关键字
- class (类)
- interface (接口)
- byte (字节型)
- short( 短整型)
- int (整型)
- long( 长整型)
- float (单精度浮点型)
- double ( 双精度浮点型)
- char (字符型)
- boolean (布尔型)
- void (声明当前成员方法没有返回值)
- 用于定义数据类型值的关键字
- true (关系运算的返回类型)
- false (关系运算的返回类型)
- null( 空)
- 用于定义流程控制的关键字
- if (条件语句的引导词)
- else ( 用在条件语句中,当条件不成立时的分支)
- switch ( 分支语句结构的引导词)
- case (用在switch语句之中,表示其中的一个分支)
- default (默认,例如,用在switch语句中,表明一个默认的分支)
- while (循环语句)
- do (用在do-while循环结构中)
- for (一种循环结构的引导词)
- break (中断当前循环)
- continue( 回到一个块的开始处)
- return ( 从成员方法中返回数据)
- 用于定义访问权限修饰符的关键字
- private (一种访问控制方式:私用模式)
- protected (一种访问控制方式:保护模式)
- public(一种访问控制方式:共用模式)
- 用于定义类,函数,变量修饰符的关键字
- abstract ( 表明类或者成员方法具有抽象属性)
- final (用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变)
- static (表明具有静态属性)
- synchronized(表明一段代码需要同步执行)
- 用于定义类与类之间关系的关键字
- extends ( 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口)
- implements(表明一个类实现了给定的接口)
用于定义建立实例及引用实例,判断实例的关键字
- new (用来创建新实例对象)
- this (指向当前实例对象的引用)
- super (表明当前对象的父类型的引用或者父类型的构造方法)
- instanceof(用来测试一个对象是否是指定类型的实例对象)
用于异常处理的关键字
- try ( 尝试一个可能抛出异常的程序块)
- catch (用在异常处理中,用来捕捉异常)
- finally (用于处理异常情况,用来声明一个基本肯定会被执行到的语句块)
- throw ( 抛出一个异常)
- throws(声明在当前定义的成员方法中所有需要抛出的异常)
- 用于包的关键字
- package (包)
- import(表明要访问指定的类或包)
- 其他修饰符关键字
- native (用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的)
- strictfp (用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范)
- transient ( 声明不用序列化的成员域)
- volatile ( 表明两个或者多个变量必须同步地发生变化)
- assert(用来进行程序调试)
八、标识符
- 标识符概述
- 就是给类,接口,方法,变量等起名字时使用的字符序列
- 组成规则
- 英文大小写字母
- 数字字符
- $和_
- 注意事项
- 不能以数字开头
- 不能是Java中的关键字
- 区分大小写
- 标识符(常见命名规则)
- 包(其实就是文件夹,用于解决相同类名问题)
- 单级和多级
- 类或者接口
- 一个单词和多个单词
- 常量
- 一个单词和和多个单词分别举例
- 包(其实就是文件夹,用于解决相同类名问题)
九、常量
- 常量概述
- 在程序执行的过程中其值不可以发生改变
- Java中常量分类
- 字面值常量
- 自定义常量
- 字符串常量 用双引号括起来的内容
- 整数常量 所有整数
- 小数常量 所有小数
- 字符常量 用单引号括起来的内容(‘a’,’A’,’0’)
- 布尔常量 较为特有,只有true和false
空常量 null
Java针对整数常量提供了4种表现形式
二进制
- 八进制
- 十进制
- 十六进制
十、进制
进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
- 不同进制的数据组成
- 二进制
- 由0,1组成。以0b开头
- 八进制
- 由0,1,…7组成。以0开头
- 十进制
- 由0,1,…9组成。整数默认是十进制的
- 十六进制
- 由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头
我们首先用eclipse来写一个Demo,看下数值为100在每个进制的输出的值
- 由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头
- 二进制
代码如下:
public class JinZhiDemo {
public static void main(String[] args) {
System.out.println(100); //十进制
System.out.println(0b100); //二进制
System.out.println(0100); //八进制
System.out.println(0x100); //十六进制
}
}
运行结果:
为什么在100前面加上0b结果是4呢?100前面加上0结果是64呢?100前面加上0x结果是256呢?不要着急,下面我来给你揭晓答案。
- 其他进制到十进制
- 二进制(100)————>十进制(4)
- 100 = 1*2² + 0*2^1 + 0*2^1 = 4+0+0 = 4
- 八进制(100)————>十进制(64)
- 100 = 1*8² + 0*8^1 + 0*8^0 = 64+0+0 = 64
- 十六进制(100)————>十进制(256)
- 100 = 1*16² + 0*16^1 + 0*16^1=256+0+0=256
- 二进制(100)————>十进制(4)
进制练习,得到下面数据的十进制值:
(1)0b10101
=1*2^4 + 1*2^2 + 1*2^0
=16 + 4 + 1
=21
(2)0123
=1*8^2 + 2*8^1 + 3*8^0
=64 + 16 + 3
=83
(3)0x3c
=3*16^1 + c*16^0
=48 + 12
=60
十进制到其他进制(方法:除基取余,只到商为0,余数反转)
十进制(20)————>二进制(?)
- 首先我们来解释一下上面的方法怎么理解:
- 20为十进制,要转为二进制,我们一定要记住余数,因为它最后就是我们的想要的答案,首先用20/2=10余0,10/2=5余0,5/2=2余1,2/2=1余0,1/2=0余1。
- 余数反转,结果是:10100
- 大家可以用上面二进制转十进制的方法来验证一下,1*2^4+1*^2²=20
认真的看了上面的十进制到二进制,我们就可以很容易的推理出十进制到八进制、十六进制的方法了,我相信聪明的你可以做到的。
- 任意x进制到y进制的转换?(方法:用十进制做桥梁)
- x进制————>十进制
- 十进制————>y进制
- 变量概述
- 在程序执行的过程中,在某个范围内其值可以发生改变的量
- 理解:如同数学中的未知数
- 变量定义格式
- 数据类型 变量名 = 初始化值;
- 注意:格式是固定的,记住格式,以不变应万变
十二、数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间
- 分类:
A:基本数据类型:4类8种
B:引用数据类型:类,接口,数组。 - 基本数据类型
整数 | 占用字节数 | 表数范围 |
---|---|---|
byte | 1 | -128~127 |
short | 2 | -32768~32767 |
int | 4 | -2的31次方~2的31次方-1 |
long | 8 | -2的63次方~2的63次方-1 |
浮点数 | 占用字节数 | 表数范围 |
---|---|---|
float | 4 | -3.403E38~3.403E38 |
double | 8 | -1.798E308~1.798E308 |
字符 | 占用字节数 |
---|---|
char | 2 |
布尔 | 占用字节数 |
---|---|
boolean | 1 |
注意:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l。
单精度的浮点数要加F或者f。
数据类型转换
- boolean类型不参与转换
- 默认转换
- 从小到大
- byte,short,char – int – long – float – double
- byte,short,char之间不相互转换,直接转成int类型参与运算。
- 强制转换
- 从大到小
- 可能会有精度的损失,一般不建议这样使用。
- 格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
public class ZhuanHuanDemo {
public static void main(String[] args) {
//**把double赋值给float,加了强制类型转换**
double d = 12.345;
float f = (float)d;
System.out.println(f);
}
}
结果:f=12.345
十三、运算符
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三目运算符
我们来逐个学习
算术运算符
注意:
A:+,-,*,/都是比较简单的操作
B:+的几种作用:(加法、正数、字符串连接符)
C:除法的时候要注意一个问题:
1.整数相除,只能得到整数
2.要想得到小数,可以*1.0
赋值运算符
- 符号: = , +=, -=, *=, /=, %=
- =为基本的赋值运算符,其他的为扩展的赋值运算符
- 练习:
public class JinZhiDemo {
public static void main(String[] args) {
int a,b;
a = b = 10;
System.out.println(a);
System.out.println(b);
int c = 10;
c += 20;
System.out.println(c);
}
}
结果:
- 符号: = , +=, -=, *=, /=, %=
- 比较运算符
注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
注2:比较运算符“==”不能误写成“=” 。 - 逻辑运算符
- 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3 < x<6,应该写成x>3 & x<6 。
- “&”和“&&”的区别:
- 单&时,左边无论真假,右边都进行运算;
- 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
- |”和“||”的区别同理,双或时,左边为真,右边不参与运算。
- 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
- 位运算符
位运算是直接对二进制进行运算。,下面来看看要注意的细节。
6. 三目运算符- 格式
- (关系表达式)?表达式1:表达式2;
- 如果条件为true,运算后的结果是表达式1;
- 如果条件为false,运算后的结果是表达式2;
- 对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a?b:c?d:e将按a?b:(c?d:e)执行
- <表达式1>?<表达式2>:<表达式3>; “?”运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果。
- 可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为是不是条件成立,条件成立为结果1否则为结果2。
有关java基础入门的概念我们就先说这么多吧,把基础学好了,对于以后开发Web和Android都是很有用的,下一章我们在继续学习吧!感谢大家的支持,谢谢!
最后给大家分享一份JAVA宝典:http://download.csdn.net/detail/m366917/9545278
- 格式