Java
Java基础
注释
- //单行注释
- /* 多行注释 */
- 文档注释
平时写代码一定要注意规范
标识符
- 所有的标识符都应该以字母(A-Z或a-z),美元符($),或下划线(_)开始
- 首字符之后可以是字母(A-Z或a-z),美元符($),或下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 可以使用中文作为标识符 但一般不这样做 也可以使用拼音 但显得很low
关键字
数据类型
- 强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 弱类型语言
- Java的数据类型分为两大类
- 基本类型
- 数值类型
- 整数类型
- byte 占1个字节
- short 占2个字节
- int 占4个字节 //最常用
- long 占8个字节 //long类型要在数字后面加个L
- 浮点类型
- float 占4个字节 //float类型要在数字后面加个F
- 是有限的 离散的 无限接近但不等于 最好不用浮点数进行比较
- double 占8个字节
- float 占4个字节 //float类型要在数字后面加个F
- 字符类型:char 占2个字节 //char name='中'
- 整数类型
- boolean类型:占1位其值只有true和false两个
- 数值类型
- 引用类型
- 类
- 接口
- 数组
- 基本类型
类型转换
-
强制转换
(类型)变量名 高--低
注意
- 不可对布尔值进行转换
- 不能把对象类型和转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
变量
-
变量就是可以变化的量
-
Java中的每个变量都必须声明其类型
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
变量作用域
- 类变量
- 实例变量
- 局部变量
常量
final
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则: Man, GoodMan
- 方法名:首字母小写和驼峰原则: run(), runRun()
运算符
-
算术运算符:+,-,*,/,%,++,--
-
赋值运算符 =
-
关系运算符:>,<,>=,<=,==,!= instanceof
-
逻辑运算符: &&,||,!
//与&& :两个结果都为真,结果才为真
或||: 两个结果有一个为真,结果才为真
非!:如果为真结果为假
-
位运算符:&,|,^,~,>>,<<,>>>(了解!!! )
左移<<: 相当于*2
右移>>: 相当于/2
-
条件运算符 ? :
-
扩展赋值运算符:+=,-=,*=,/=
-
Math.变量名( a,b)=a^b
-
三元运算符:x ? y : z 如果x==true,则结果为y,否则为z
Java流程控制
用户交互Scanner
- 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner 是 Java5 的新特征,我们可以通过Scanner 类来获取用户的输入
- 基本语法
Scanner s = new Scanner(System.in); - 通过Scanner类的 next()与 nextLine()方法获取输入的字符串,在读取前我们一般需要使用 hasNext0与 hasNextLine0判断是否还有输入的数据。
Scanner对象
-
next():
-
1、一定要读取到有效字符后才可以结束输入
-
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去
-
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
-
4、next() 不能得到带有空格的字符串
-
-
nextLine():
- 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符.
- 2、可以获得空白。
顺序结构
- JAVA的基本结构就是顺度结构,除非特别指明,否则就按照顺序一句一句执行。
- 顺序结构是最简单的算法结构
- 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构
选择结构
-
if单选择结构
if( 布尔表达式 ){
//如果表达式结果为ture将执行的语句
}
-
if双选择选择结构
if( 布尔表达式 ){
//如果表达式结果为ture将执行的语句
}else{
//如果表达式结果为false将执行的语句
}
-
if多选择选择结构
if( 布尔表达式1 ){
//如果表达式1结果为ture将执行的语句
}else if( 布尔表达式 2 ){
//如果表达式结果2为ture将执行的语句
}else if( 布尔表达式 3){
//如果表达式3结果为ture将执行的语句
}else{
//如果表达式结果为f全为alse将执行的语句
}
-
嵌套的if结构
if( 布尔表达式 1 ){
//如果表达式1结果为ture将执行的语句
if( 布尔表达式2 ){
//如果表达式2结果为ture将执行的语句
}
}
-
switch多选择结构
- 多选择结构还有一个实现方式就是switch case语句。
- switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
- switch 语句中的变量类型可以是:
byte、short、int 或者 char。
从 Java SE 7 开始
switch 支持字符串 String 类型了同时 case 标签必须为字符串常量或字面量
while循环
-
while是最基本的循环,它的结构为:
while( 布尔表达式 ) { //循环内容 } -
只要布尔表达式为 true,循环就会一直执行下去
-
我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环少部分情况需要循环一直执行,比如服务器的请求响应监听等。
-
循环条件一直为true就会造成无限循环[死循环],我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃!
-
思考:计算1+2+3+...+100=?
public static void main(String[] args) { int i=0; int sum=0; while (i<100){ i++; sum=sum+i; } System.out.println(sum); }
do while
do {
//循环内容
}while( 布尔表达式 )
For循环
-
虽然所有循环结构都可以用 while 或者 do...while表示,但Java 提供了另一种语句 for循环,使一些循环结构变得更加简单。
-
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构for循环执行的次数是在执行前就确定的。语法格式如下:
for(初始化;布尔表达式;更新){ //初始代码 } -
练习1:计算0到100之间的奇数和偶数的和
public static void main(String[] args) { int sum1=0; int sum2=0; for (int i=0;i<=100;i++){ if (i%2==0){ sum1=sum1+i; }else { sum2=sum2+i; } } System.out.println("所有偶数的和:"+sum1); System.out.println("所有奇数的和:"+sum2); } -
练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
public static void main(String[] args) { for (int i = 0; i < 1000; i++) { if (i%5==0){ System.out.print(i+"\t"); } if (i%(3*5)==0){ System.out.println(); } } } -
练习3:打印九九乘法表
public static void main(String[] args) { for (int j = 1; j <= 9; j++) { for (int i = 1; i <= j; i++) { System.out.print(i + "*" + j + "=" + (i * j) + "\t"); } System.out.println(); } }
break
- break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环不执行循环中剩余的语句。(break语句也在switch语句中使用)continue
continue
- continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句接着进行下一次是否执行循环的判定
goto
- 关于goto关键字
goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用; Java没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子---带标签的break和continue. - “标签”是指后面跟一个冒号的标识符,例如: label:
- 对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是: 我们希望在其中嵌套另-个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方.
练习
打印一个三角形
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print(' ');
}
for (int j = 1; j <= i; j++) {
System.out.print('*');
}
for (int j=1;j<i;j++){
System.out.print('*');
}
System.out.println();
}
}
*
***
*****
*******
*********