java 简介、JDK安装、Hello World体验、java语法(标示符、关键字)、变量、运算符
1、java介绍:
Java的发展可以归纳如下的几个阶段:
---------------第一阶段(完善期)1995-1998
---------------第二阶段(平稳期):JDK 1.3一JDK 1.4;
---------------第三阶段(发展期):JDK1.52005年推出-----JDK 1.7(被Oracle收购后推出)。
(1)在开发上更是分为了Java SE, Java EE, Java ME:
J2SE:Java 2 Platform Standard Edition( 2005年之后更名为Java SE )。包含构成Java语言核心的类。比如数据库连接、接口定义、数据结构、输入/输出、网络编程。
J2EE:Java 2 Platform Enterprise Edition ( 2005年之后更名为Java EE )。Enterprise Edition(企业版)包含J2SE中的所有类,并且还包含用于开发企业级应用的类。比如EJB、Servlet、JSP、XML、事务控制,即是现在Java应用的主要方向,像一些银行或电信的系统大多基于此架构。
J2ME发展成为安卓
(2)如果从编程语言的角度而言,应该分为两种:
--------------编译型:学习过C语言的同学应该知道,编译之后会出现一个*.exe文件,供用户使用。
--------------解释型:像ASP语言那样,直接将代码放到服务器上进行解释执行。
所有的Java程序文件的后缀都应该是“*.java",而任何一个*.java程序首先必须经过编译,编译之后会形成一个*.class的文件(字节码文件),而后在计算机上执行,但是解释程序的计算机并不是一台真正意义上的计算机,而是一台由软件和硬件模拟出来的计算机—Java虚拟机(Java Virtual Machine. JVM)。
2、jdk安装
JRE(Java Runtime Environment Java运行环境)
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JDK(Java Development Kit Java开发工具包)JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就不用再单独安装JRE了。
JDK安装:
(1)jdk 下载,进入官方网站。下载后直接安装
(2)配置环境变量
右键计算机-->属性-->高级系统设置-->环境变量。
在系统变量中新建
在新建页面,输入变量名“JAVA_HOME”;变量值是“你的jdk的路径
在系统变量区域,选择“新建”,输入变量名“CLASSPATH”:CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
在系统变量中查找 Path 编辑,在系统变量中新建
变量名:PATH
变量值:win7加上 .;%JAVA_HOME%lib;%JAVA_HOME%lib\tools.jar;。
3、HelloWorld 体验
新建一个文件夹,起个名字如student改变后缀名改为 .java 文件起的名字要与文件中的相同
class student{
public static void math(String[] args){
System.out.println("helloworld!"); 输出
}
}
大小写要区分,print 是不换行,加上ln就是换行
(1) public class定义:
类名称必须和文件名称保持一致,否则程序将无法编译,在一个*.Java之中只能有一个public 类;
(2) 主方法main():
主方法表示的是一个程序起点,所有的程序代码都由此开始顺序执行,在Java中主方法也要放在一个类中。
(3) 系统输出System.out.println():
(4) 注释:
//表示单行注释,就是在注释内容前面加双斜线(//),Java编译器会忽略掉这部分信息。
/*…*/表示多行注释,多行注释,就是在注释内容前面以单斜线加一个星形标记(/*)开头,并在注释内容末尾以一个星形标记加单斜线(*/)结束。
4、java标示符与关键字
(1)标示符
java中用于定义名称的都为标识符,如文件名称、类名称、方法名称或变量名称等,在
Java中标识符的定义格式由字母、数字、_(下划线),$所组成,不能以数字开头,不能是Java中的关键字,而且每一个标识符都要有自己的意义,如StudentName,表示的是学生姓名。定义时可以用拼音
标识符区分大小写。
(2)关键字
abstract |
assert |
boolean |
break |
byte |
case |
catch |
char |
class |
continue |
const |
default |
do |
double |
else |
extends |
enum |
final |
finally |
float |
for |
goto |
if |
implements |
import |
instanceof |
int |
interface |
long |
native |
new |
package |
private |
protected |
public |
return |
short |
static |
synchronized |
super |
strictfp |
this |
throw |
throws |
transient |
try |
void |
volatile |
while |
5、变量
变量是内存中装载数据的小盒子,你只能用它来存数据和取数据。
计算机存储设备的最小信息单元叫“位(bit)
计算机最小的存储单元叫“字节(byte)
1个字节(8位)
(1)变量的基本类型:4类8种
java中默认的整数类型是int类型:Java中整数常量如果不在-2147483648~2147483648之间就必须添加“L”后缀
java中默认的浮点类型是double类型:Java中所有没有后缀以及使用“D”后缀(小写也可以,但建议使用大写)的小数都是double类型;float类型常量必须添加“F”后缀
l-------------3.14没有后缀,所以它是double类型;
l ------------5.28D为double类型;
l =----------1.26F为float类型。
四类 |
八种 |
字节数 |
数据表示范围 |
整型 |
byte |
1 |
-128~127 |
short |
2 |
-32768~32767 |
|
int |
4 |
-2147483648~2147483648 |
|
long |
8 |
-263~263-1 |
|
浮点型 |
float |
4 |
-3.403E38~3.403E38 |
double |
8 |
-1.798E308~1.798E308 |
|
字符型 |
char |
2 |
表示一个字符,如('a','A','0','家') |
布尔型 |
boolean |
1 |
只有两个值true与false |
(2)定义变量
定义变量的语法格式:
数据类型 变量名 = 数据值;
int a = 100;
-----------------------变量定义后可以不赋值,使用时再赋值。不赋值不能使用。
-----------------------变量使用时有作用域的限制。
例如:
public static void main(String[] args) {
int x = 20;
{
int y = 20; 不在一个作用域里面即不在一个大括号里,当然java有一个全局变量是所有域都可以调用如int x=20;
}
System.out.println(x);//读取x变量中的值,再打印
System.out.println(y);//读取y变量中的值失败,失败原因,找不到y变量,因为超出了y变量作用范围,所以不能使用y变量
}
n 变量不可以重复定义。
例如:
blic static void main(String[] args){
int x = 10;
double x = 5.5;//编译失败,变量重复定义
}
(3)数据类型转换
byte -> short -> int -> long -> float -> double
----------------------自动转换:范围大的数据类型 变量 = 范围小的数据类型值;
例如:
double d = 1000;
或
int i = 100;
double d2 = i;
-----------------------强制转换:范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值;
例如:
int i = (int)6.718; //i的值为6
或
double d = 3.14;
int i2 = (int)d; //i2的值为3
6、运算符
(1)算数运算符
运算符 |
运算规则 |
范例 |
结果 |
+ |
正号 |
+3 |
3 |
+ |
加 |
2+3 |
5 |
+ |
连接字符串 |
“中”+“国” |
“中国” |
- |
负号 |
int a=3;-a |
-3 |
- |
减 |
3-1 |
2 |
* |
乘 |
2*3 |
6 |
/ |
除 |
5/2 |
2 |
% |
取模 |
5/2 |
1 |
++ |
自增 |
int a=1;a++/++a |
2 |
-- |
自减 |
int b=3;a--/--a |
2 |
(2) 算数运算符++、--的使用
(1)a++ b--
int a = 3;
int b = 3;
a++;
b--;
System.out.println(a);
System.out.println(b);
上面代码的输出结果a值为4,b值为2;
这说明a的原有值发生了改变,在原有值的基础上自增1;b的原有值也发生了改变,在原有值的基础上自减1;
l-------------------- ++运算符,会在原有值的基础上自增1;
l --运算符,会在原有值的基础上自减1。
(2)++a --b
int a = 3;
int b = 3;
++a;
--b;
System.out.println(a);
System.out.println(b);
上面代码的输出结果a值为4,b值为2;
这说明++,--运算符单独使用,不参与运算操作时,运算符前后位置导致的运算结果是一致的。
(3)+,--运算符参与运算操作时,发生了怎样的变化,我们来看一段代码:
int a = 3;
int b;
b = a++ + 10;
System.out.println(a);
System.out.println(b);
上面代码的输出结果a值为4,b值为13;
这里我要强调一下了,当++,--运算符参与运算操作时,后置++,--的作用:
l ++,--运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1;
(4)++,--运算符前置时,参与运算操作的变化,我们来看一段代码:
int a = 3;
int b;
b = ++a + 10;
System.out.println(a);
System.out.println(b);
上面代码的输出结果a值为4,b值为14;
这里我强调一下,当++,--运算符参与运算操作时,前置++,--的作用:
l ++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作。
商场库存清单案例,这个案例最终会在控制台输出如下结果
代码:
class kucun { public static void main(String[] args) { String model="MacBookAir"; double size=13.3; double price=6988.88; int kucun=5; String model1="thinkpad"; double size1=14.0; double price1=5999.99; int kucun1=10; String model2="asus"; double size2=15.6; double price2=4999.5; int kucun2=5; int sum=kucun+kucun1+kucun2; double sumprice=price+price1+price2; System.out.println("品牌型号"+'\t'+"尺寸"+'\t'+"价格"+'\t'+"库存"); System.out.println(model+'\t'+size+'\t'+price+'\t'+kucun); System.out.println(model1+'\t'+size1+'\t'+price1+'\t'+kucun1); System.out.println(model2+'\t'+'\t'+size2+'\t'+price2+'\t'+kucun2); System.out.println("总库存数"+':'+sum); System.out.println("库存商品总金额"+':'+sumprice); } }
(3)赋值运算符
运算符 |
运算规则 |
范例 |
结果 |
= |
赋值 |
int a=2 |
2 |
+= |
加后赋值 |
int a=2,a+=2,(a=a+2) |
4 |
-= |
减后赋值 |
int a=2,a-=2 (a=a-2) |
0 |
*= |
乘后赋值 |
int a=2,a*=2 (a=a*2) |
4 |
/= |
整除后赋值 |
int a=2,a/=2 |
1 |
%= |
取模后赋值 |
int a=2,a%=2 |
0 |
例如:a+=2、b-=2、c*=2等
class demo2
{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); /*System.out.print("请输入一个数字"); int n=sc.nextInt(); System.out.println("n的值为"+n);*/ int a=2;
int b=2;
int c=2
a+=2;//a=a+2
b-=2;//b=b-2
c*=2;//c=c*2 System.out.println(a+"....."+b+"...."+c); } }
运行结果:
注意:当使用赋值运算符,会将结果自动强转成等号左边的数据类型。
例如:byte a=10;
x=a+20;
x的属性也变成了byte
(4)比较运算符
运算符 |
运算规则 |
范例 |
结果 |
== |
相等于 |
4==3 |
False |
!= |
不等于 |
4!=3 |
True |
< |
小于 |
4<3 |
False |
> |
大于 |
4>3 |
True |
<= |
小于等于 |
4<=3 |
False |
>= |
大于等于 |
4>=3 |
True |
例如==和=的区别:
int a = 3;
int b = 4;
System.out.println( a=b );
System.out.println( a==b );
(5)逻辑运算符
运算符 |
运算规则 |
范例 |
结果 |
& |
与 |
false&true |
False |
| |
或 |
false|true |
True |
^ |
异或 |
true^flase |
True |
! |
非 |
!true |
Flase |
&& |
短路与 |
false&&true |
False |
|| |
短路或 |
false||true |
True |
短路与&&和短路或|| 短路与 && 和 与 & 的区别区别是&&只要第一个条件不满足,后面条件就不再判断。 &要对所有的条件都进行判断。
短路或 || 和或 | 区别是||只要满足第一个条件,后面的条件就不再判断。 | 要对所有的条件进行判断。
class demo2
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
boolean b = 100>10;
boolean b2 = false;
System.out.println(b&&b2); // 打印结果为 false
System.out.println(b||b2); //打印结果为 true
System.out.println(!b2); //打印结果为 true
System.out.println(b && 100>10); //打印结果为 true
}
}
(6)三元运算符
System.out.println( 3>2 ? "正确" : "错误" );
(7)优先级(没仔细看)
优先级 |
描述 |
运算符 |
1 |
括号 |
()、[] |
2 |
正负号 |
+、- |
3 |
自增自减,非 |
++、--、! |
4 |
乘除,取余 |
*、/、% |
5 |
加减 |
+、- |
6 |
移位运算 |
<<、>>、>>> |
7 |
大小关系 |
>、>=、<、<= |
8 |
相等关系 |
==、!= |
9 |
按位与 |
& |
10 |
按位异或 |
^ |
11 |
按位或 |
| |
12 |
逻辑与 |
&& |
13 |
逻辑或 |
|| |
14 |
条件运算 |
?: |
15 |
赋值运算 |
=、+=、-=、*=、/=、%= |
16 |
位赋值运算 |
&=、|=、<<=、>>=、>>>= |
优先级顺序看完了,我们来通过代码,加强一下:
int n = 3>4 ? 100 : 200;
这行的代码运算执行顺序我们来写一下:
l 1.执行 3>4操作,得到布尔类型false的结果
l 2.通过结果false,将对应的表达式2的结果200,作为运算的最终结果
l 3.把200 赋值给变量n
接下来,我们看一个比较复杂的代码:
int a = 5;
int b = 3;
int c = 1;
int n2 = (a>b && b>c) ? (c++) : (++c);
这段代码运算执行顺序我们也写一下:
l 1.小括号优先级高,我们先运算第一组小括号中的代码
l 1.1. 比较运算符”>” 优先级大于 逻辑运算符”&&”
n 先执行 a>b,得到结果true;
n 再执行 b>c,得到结果true;
n 最后执行 a>b的结果 && b>c的结果,即 true && true, 结果为true
l 2.三元运算符中的条件判断结果为true,返回表达式1的结果 c++
n 先将变量c的原有值赋值给变量n2,即n2值为1;
n 再将变量c的值自增1,更新为2。
运算符我们学到这里就结束了,稍后在“趣味乐园”中,我们可以运用运算符进行练习。