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程序所需的核心类库等,如果想要运行一个开发好的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{
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;
编译失败,变量重复定义
}
(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
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 先执行
n 再执行
n 最后执行
l 2.三元运算符中的条件判断结果为true,返回表达式1的结果 c++
n 先将变量c的原有值赋值给变量n2,即n2值为1;
n 再将变量c的值自增1,更新为2。
运算符我们学到这里就结束了,稍后在“趣味乐园”中,我们可以运用运算符进行练习。