基础
一、java的相关概念
1.1 java是什么
- Java是一门编程语言,Java发布于1995年,名字来自Java咖啡。据说Java设计人员在讨论给语言起什么名字时,正在喝Java咖啡。所以Java就变成了语言的名字,Java的Logo也是一杯咖啡。Java编译好的文件开头会加上CA FE BA BE(Cafe Babe),也许是设计者留下的一个彩蛋吧。
- Java摒弃了指针、多重继承的概念,并有庞大的库供开发者调用,所以用起来非常“方便”。
1.2 java特性
- 简洁有效,可移植性,面向对象,解释型,适合分布式计算,性能好,健壮性,多线程处理能力,安全性高,动态语言等。
1.3 java的运行环境
- JDK,JRE
1.4 java编程
第一个程序:HelloWorld
class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
二、java编程基础
2.1 标识符和关键字
(1)标识符
- 就是给类,接口,方法,变量等起名字的字符序列
- 组成规则:
A:英文大小写字母
B:数字
C:$和_ - 注意事项:
A:不能以数字开头
B:不能是java中的关键字
C:区分大小写 - 常见的命名规则(见名知意)
A:包 全部小写
单级包:小写; 举例:liuyi, com
多级包:小写,并用.隔开; 举例:cn.itcast, com.baidu
B:类或者接口
一个单词:首字母大写; 举例:Student,Demo
多个单词:每个单词首字母大写; 举例:HelloWorld,StudentName
C:方法或者变量
一个单词:首字母小写;举例:name,main
多个单词:从第二个单词开始,每个单词首字母大写;举例:studentAge,showAllNames()
D:常量
全部大写
一个单词:大写;举例:PI
多个单词:大写,并用_隔开;举例:STUDENT_MAX_AGE
(2)关键字
- 被Java语言赋予特定含义的单词
- 特点:
全部小写。 - 注意事项:
A:goto和const作为保留字存在。
B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记
2.2 数据类型
(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
A:基本数据类型:4类8种
B:引用数据类型:类,接口,数组。
(3)基本数据类型
A:整数 占用字节数
byte 1;short 2;int 4;long 8
B:浮点数
float 4;double 8
C:字符
char 2
D:布尔
boolean 1
注意:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l。
单精度的浮点数要加F或者f。
8:数据类型转换(掌握)
(1)boolean类型不参与转换
(2)默认转换
A:从小到大
B:byte,short,char – int – long – float – double
C:byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
(4)思考题和面试题:
A:下面两种方式有区别吗?
float f1 = 12.345f;
float f2 = (float)12.345;
B:下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
C:下面的操作结果是什么呢?
byte b = (byte)130;
D:字符参与运算
是查找ASCII里面的值
‘a’ 97
‘A’ 65
‘0’ 48
System.out.println('a');
System.out.println('a' + 1);
E:字符串参与运算
这里其实是字符串的连接
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");
2.3 运算符
(1)算术运算符
A:+,-,*,/,%,++,–
B:+的用法
a:加法
b:正号
c:字符串连接符
C:/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
D:++和–的用法
a:他们的作用是自增或者自减
b:使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:先自增或者自减,再参与操作
int a = 10;
int b = ++a;
放在操作数的后面:先参与操作,再自增或者自减
int a = 10;
int b = a++;
(2)赋值运算符
A:=,+=,-=,*=,/=,%=等
B:=叫做赋值运算符,也是最基本的赋值运算符
int x = 10; 把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点
隐含了自动强制转换。
面试题:
short s = 1;
s = s + 1;
short s = 1;
s += 1;
请问上面的代码哪个有问题?
(3)比较运算符
A: == , !=, >, >=, <, <=
B:无论运算符两端简单还是复杂最终结果是boolean类型。
C:千万不要把==写成了=
(4)逻辑运算符
A:&,|,^,!,&&,||
B:逻辑运算符用于连接boolean类型的式子
C:结论
&:有false则false
|:有true则true
^:相同则false,不同则true。
情侣关系。
!:非true则false,非false则true
&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
(5)位运算符(了解)
A:^的特殊用法
一个数据针对另一个数据位异或两次,该数不变
B:面试题
a:请实现两个变量的交换
**采用第三方变量
**用位异或运算符
左边a,b,a
右边a^b
b:请用最有效率的方式计算出2乘以8的结果
2<<3
(6)三元运算符
A:格式
比较表达式?表达式1:表达式2;
B:执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
C:案例:
a:比较两个数据是否相等
b:获取两个数据中的最大值
c:获取三个数据中的最大值
2:键盘录入(掌握)
(1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
(2)如何实现呢?目前就记住
A:导包
import java.util.Scanner;
位置:在class的上边
B:创建对象
Scanner sc = new Scanner(System.in);
C:获取数据
int x = sc.nextInt();
2.4程序结构
- 顺序结构
- 分支结构
- 循环结构