java开发环境:
1)编译运行过程:
1.1)编译期:.java,经过编译,生成.class字节码文件
1.2)运行期:JVM加载.class并运行.class
跨平台,一次编程到处使用
2)名词:
2.1)JVM:java虚拟机
加载.class并运行.class
2.2)JRE:java运行环境
除了包含JVM以外还包含运行java程序所必须的环境
JRE=JVM+java系统类库
2.3)JDK:java开发工具包
除了包含JRE以外还包含开发java程序所必须的命令工具
JDK=JRE+编译、运行等工具
运行的最小环境为JRE,开发的最小环境为JDK
变量、基本数据类型
1.变量:存数的,代词,指代的就是它所存的那个数
1)声明:
int a; //声明一个整型的变量,名为a
int b,c,d; //声明三个整型的变量,名为b,c,d
2)命名:
2.1)只能包含字母、数字、_和$符,并且不能以数字开头
2.2)严格区分大小写
2.3)不能使用关键字
2.4)可以中文命名,但不建议
建议:“见名知意”、“驼峰命名法”
3)初始化:第一次赋值
3.1)声明的同时初始化
int a = 5; //声明整型变量a并赋值为5
3.2)先声明后初始化
int a; //声明整型变量a
a = 5; //给变量a赋值为5
4)使用:
4.1)对变量的使用就是对它所存的那个数的使用
4.2)变量的使用要与数据类型匹配
int a = 3.14; //编译错误,数据类型不匹配
4.3)变量在用之前必须声明并初始化
System.out.println(m); //编译错误,m未声明
int m;
System.out.println(m); //编译错误,m未初始化
2.基本数据类型:
1)int:整型,只能装整数,4个字节,-21个多亿到21个多亿
1.1)整数直接量默认为int型,但不能超范围,超范围则编译错误
1.2)两个整数相除,结果还是整数,小数位无条件舍弃
1.3)整数运算时超出范围则发生溢出,溢出是需要避免的
2)long:长整型,只能装整数,8个字节,很大很大很大
2.1)长整型直接量需要数字后加L或l
2.2)运算时若有可能溢出,建议在第1个数字后加L,不溢出可以不加L
2.3)System.currentTimeMillis()用于获取自
1970.1.1零时到此时此刻的毫秒数
3)double:浮点型,只能装小数,8个字节,很大很大很大
3.1)浮点数直接量默认为double型,若想表示float需要数字后加F或f
3.2)double型数据参与运算时,会出现舍入误差,所以精确运算场合不能用
4)boolean:布尔型,1个字节
4.1)只能取值为true和false
5)char:字符型,2个字节
5.1)java中的char采用Unicode编码格式,
一个字符char对应一个码int
表现的形式是char字符,但实质上存储的是int码
码只能在0到65535之间
ASCII码:‘a’–97 ‘A’–65 ‘0’–48
5.2)字符直接量必须放在单引号中,有且仅有一个
5.3)特殊字符需要通过\来转义
基本数据类型间的转换:
基本数据类型从小到大依次为:
byte,short,int,long,float,double,
char
1)两种方式:
1.1)自动类型转换:从小类型到大类型
1.2)强制类型转换:从大类型到小类型
语法: (要转换为的类型)变量
强转有可能会溢出或精度丢失
2)两点规则:
2.1)整数直接量可以直接赋值给byte,short,char,
但不能超范围
2.2)byte,short,char型数据参与运算时,
先一律转换为int再运算
1.运算符:
1)算术:+,-,,/,%,++,–
2)关系:>,<,>=,<=,==,!= boolean
3)逻辑:&&,||,! boolean
4)赋值:=,+=,-=,=,/=,%=
5)字符串连接:+
6)条件(三目)运算:boolean?数1:数2
2.分支结构:
1)if结构:1条路
2)if…else结构:2条路
3)if…else if结构:多条路
4)switch…case结构:多条路
优点:效率高、结构清晰
缺点:整数、相等
case中如果没有break则一直走到完
5)break:退出switch
用switch能实现的,用if…else if都可以实现
用if…else if能实现的,不一定能用switch实现
3.闰年的判断公式:
1)能被4整除,并且,不能被100整除,或者能被400整除
(year%4==0 && year%100!=0) || year%400==0
2)输出系统当前时间
long startTime = System.currentTimeMillis();
4.循环:
1.循环:反复执行一段相同或相似的代码
2.循环三要素:
1)循环变量的初始化
2)循环的条件(以循环变量为基础)
3)循环变量的改变(向着循环的结束变)
循环变量:在循环过程中所改变的那个数
3.循环结构:
1)while:先判断后执行,有可能一次都不执行
2)do…while:先执行后判断,至少执行一次
第1要素与第3要素相同时首选
3)for:应用率最高,固定次数循环
4.break:退出循环
continue:跳过循环体中剩余语句而进入下一次循环
5.三种循环的更佳适用情况:
1)while:"当…"循环
2)do…while:"直到…"循环
第1要素与第3要素相同时首选do…while
3)for:固定次数循环,应用率最高
6.嵌套循环:
1)循环中套循环,一般多行多列时使用,
外层控制行,内层控制列
2)执行规则:外层循环走一次,内层循环走所有次
3)建议:嵌套的层数越少越好,能用一层就不用两层
若必须超过三层才能实现,说明设计有问题
4)break只能跳出一层循环
-
Java中数据类型的分类
- 基本数据类型
- 引用数据类型
-
基本数据类型分类(4类8种)
- 整数型
- byte 占一个字节 -128到127
- short 占两个字 -215~215-1
- int 占四个字节 -231~231-1
- long 占八个字节 -263~263-1
- 浮点型
- float 占四个字节 -3.403E38~3.403E38 单精度
- double 占八个字节-1.798E308~1.798E308 双精度
- 字符型
- char 占两个字节 0~65535
- 布尔型
- boolean
- boolean理论上是占八分之一个字节, 但是,它的大小不是明确指定的.
boolean的大小JVM规范并没有指定
- boolean理论上是占八分之一个字节, 但是,它的大小不是明确指定的.
- boolean
- 整数型
-
A:案例演示
- 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
- byte b1 = 3;
- byte b2 = 4;
- byte b3 = b1 + b2;
Java语言基础(算术运算符++和–的用法)(掌握)
- A:++,–运算符的作用
- 自加(++)自减(–)运算
- ++:自加。对原有的数据进行+1
- –:自减。对原有的数据进行-1
- B:案例演示
- a:单独使用:
- 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
- b:参与运算使用:
- 放在操作数的前面,先自增或者自减,然后再参与运算。
- 放在操作数的后面,先参与运算,再自增或者自减。
- a:单独使用:
Java语言基础(算术运算符++和–的练习)(掌握)
- A:案例演示
-
* 请分别计算出a,b,c的值? * int a = 10; int b = 10; int c = 10; a = b++; c = --a; b = ++a; a = c--;
- B:案例演示
-
* 请分别计算出x,y的值? int x = 4; int y = (x++)+(++x)+(x*10); ~~~
- C:面试题
-
- byte b = 10;
- b++;
- b = b + 1;
- 问哪句会报错,为什么
b+=1(b++)包含了一个隐藏的类型转换,相当于 b=(byte)(b+1);
Java语言基础(赋值运算符的基本用法)(掌握)
- A:赋值运算符有哪些
-
a:基本的赋值运算符:=
- 把=右边的数据赋值给左边。
-
b:扩展的赋值运算符:+=,-=,*=,/=,%=
- += 把左边和右边做加法,然后赋值给左边。
-
Java语言基础(赋值运算符的面试题)(掌握)
- A:案例演示
- 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
- short s=1;s = s+1;
- short s=1;s+=1;
Java语言基础(关系运算符的基本用法及其注意事项)(掌握)
- A:关系运算符有哪些(比较运算符,条件运算符)
- ==,!=,>,>=,<,<=
- 注意事项:
-
无论你的操作是简单还是复杂,结果是boolean类型。
-
“==“不能写成”=”。
-
Java语言基础(逻辑运算符的基本用法)(掌握)
-
A:逻辑运算符有哪些
a: &,|,^,!
b: &&,|| -
B:案例演示
-
逻辑运算符的基本用法
-
注意事项:
- a:逻辑运算符一般用于连接boolean类型的表达式或者值。
- b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
- 算术表达式:a + b
- 比较表达式:a == b(条件表达式)
-
C:结论:
-
&逻辑与:有false则false。
-
|逻辑或:有true则true。
-
^逻辑异或:相同为false,不同为true。
-
!逻辑非:非false则true,非true则false。
Java语言基础(逻辑运算符&&和&的区别)(掌握)
-
A:案例演示
- &&和&的区别?
- a:最终结果一样。
- b:&&具有短路效果。左边是false,右边不执行。
- &是无论左边是false还是true,右边都会执行
- &&和&的区别?
-
B:同理||和|的区别?
-
C:开发中常用谁?
- &&,||,!
Java语言基础(位运算符的基本用法1)(了解)
- A:位运算符有哪些
- &,|,^,~ ,>>,>>>,<<
- B:案例演示
-
位运算符的基本用法1
-
&,|,^,~ 的用法
-
&:有0则0
-
|:有1则1
-
^:相同则0,不同则1
-
~:按位取反
计算: 4&7 的值?
8&14的值?
-
- C:面试题
- byte可以作为switch的表达式吗?
- long可以作为switch的表达式吗?
- String可以作为switch的表达式吗?
- C:执行流程
- 先计算表达式的值
- 然后和case后面的匹配,如果有,就执行对应的语句,否则执行default控制的语句
Java语言基础(选择结构switch语句的注意事项)(掌握)
- A:案例演示
- a:case后面的值不能出现相同的
- b:default可以省略吗?
- 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
- c:break可以省略吗?
- 最后一个可以省略,其他最好不要省略
- 会出现一个现象:case穿透。
- 最终我们建议不要省略
- d:default一定要在最后吗?
- 不是,可以在任意位置。但是建议在最后。
- e:switch语句的结束条件
- a:遇到break就结束了
- b:执行到switch的右大括号就结束了