------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一,关键字
• 关键字概述
– 被Java语言赋予特定含义的单词
• 关键字特点
– 组成关键字的字母全部小写
• 关键字注意事项
– goto和const作为保留字存在,目前并不使用
– 类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观
常见关键字例举:
class | interface | byte | short | int |
long | float | double | char | boolean |
void |
|
|
|
|
用于定义数据类型值的关键字 | ||||
true | false | null |
|
|
用于定义流程控制的关键字 | ||||
if | else | switch | case | default |
while | do | for | break | continue |
return |
|
|
|
|
|
|
|
|
|
用于定义访问权限修饰符的关键字 | |||||
private | protected | public |
|
| |
用于定义类,函数,变量修饰符的关键字 | |||||
abstract | final | static | synchronized | ||
用于定义类与类之间关系的关键字 | |||||
extends | implements |
|
|
| |
用于定义建立实例及引用实例,判断实例的关键字 | |||||
new | this | super | instanceof |
| |
|
|
|
|
|
二,常量和变量
(一):常量的定义和分类:在程序执行的过程中,其值不发生改变的量
(2)分类:
A:字面值常量
B:自定义常量
(3)字面值常量
A:字符串常量 "hello"
B:整数常量 12,23
C:小数常量 12.345
D:字符常量 'a','A','0'
E:布尔常量 true,false
F:空常量 null(后面讲)
(4)在Java中针对整数常量提供了四种表现形式
A:二进制 由0,1组成。以0b开头。
B:八进制 由0,1,...7组成。以0开头。
C:十进制 由0,1,...9组成。整数默认是十进制。
D:十六进制 由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
(二),进制转换简介
(1)其他进制到十进制
系数:就是每一个位上的数值
基数:x进制的基数就是x
权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。
结果:系数*基数^权次幂之和。
(2)十进制到其他进制
除基取余,直到商为0,余数反转。
(3)进制转换的快速转换法
A:十进制和二进制间的转换
8421码。
B:二进制到八进制,十六进制的转换
(三),变量的概念和表示方式
(1)在程序的执行过程中,其值在某个范围内可以发生改变的量
(2)变量的定义格式:
A:数据类型变量名 =初始化值;
B:数据类型变量名;
变量名 = 初始化值;
在后来更多的知识运用中,我发现,用B类型的定义的方式比较多,因为涉及到变量的作用域的问题。先定义,在方法内赋值,增加了变量运用的灵活性!
三,数据类型
A,基本数据类型:4类,8种。
B,引用数据类型,类,接口,数组
(1)基本数据类型
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。
(经过这些天的学习,下面的数据类型转换问题是非常常用的知识点):
(2)默认转换
A:从小到大
B:byte,short,char --int -- long -- float -- double
C:byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式:
目标数据类型变量名 = (目标数据类型) (被转换的数据);
有一道面试题特别的出名:
byte b1 = 3;
byte b2 = 4;
(1)byte b3 = b1 + b2;
(2)byte b4 = 3 + 4;
分析:式子2会出编译错误,正确的写法是byte b4 =(byte)3+4;
2个基本知识点:字符参与运算,是字符+ascii对应的值的运算
字符串参与运算,是字符串拼接!
四,运算符
基本算数运算符:+(加),-(减),*(乘),/(除),%(取余),++(自增),--(自减);
赋值运算符:=(最常见的赋值运算符,不是等于,等于是==),+=,-=,*=,/=,%=等
后面的运算符大同小异,举例一个:a+=b :a = a + b;(隐含了自动强制转换)
比较运算符:==,!=,>,>=,<,<=。
逻辑运算符需要清晰的列举一下:
逻辑运算符
&,|,^,!,&&,||
逻辑运算符用于连接boolean类型的式子
结论
&:有false则false
|:有true则true
^:相同则false,不同则true。
情侣关系。
!:非true则false,非false则true
&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
位运算符:
请用最有效率的方式计算出2乘以8的结果
2<<3(等价于2*2的3次方);
三目运算符:比较表达式?表达式1:表达式2;
自我感悟:经过后面的编程学习,我发现,采用三目运算符会简化很多代码,很巧妙。
五,流程控制语句:
有了上面的基本知识做支撑,接下来才正式进入到Java基础语法的学习。java代码的执行结构有三种:顺序结构,从上往下,依次执行,选择结构,按照不同的选择,执行不同的代码,循环结构,重复执行某一部分的代码。
下面整理一下选择结构的两种方式:
/**
* if语句格式1
*
* 语法:if (判断条件) {
* 为真时执行大括号中内容
* }
*
* 注意:
* 大括号可以省略,但不建议
* if语句,不会影响后续代码执行
* 省略大括号,if语句只会向下执行1行代码
* if语句的大括号,可以包含多行代码
*/
class IfDemo1 {
/**
* java程序运行入口
* jvm自动加载main方法
*/
public static void main(String[] args) {
int money = 100;
/*if (money < 1000) {
System.out.println("转身离开");
}*/
/*if (money < 1000) {
System.out.println("再次转身离开");
}
System.out.println("我是后续代码");*/
if (money > 1000) {
System.out.println("再次转身离开");
System.out.println("我是后续代码");
}
}
}
if语句,常见的还有双分支结构:
/**
* 学习if语句双分支
*
* if (判断条件) {
* 为真时执行这里的第一个大括号
* } else {
* 为假时执行这里的第二个大括号
* }
*/
class IfDemo2 {
/**
* java程序运行入口
* jvm自动加载main方法
*/
public static void main(String[] args) {
double money = 6.5;
if (money < 6.5) {
System.out.println("买立白洗洁精");
}else {
System.out.println("买其他品牌的洗洁精");
}
}
}
if语句的多分支结构:
import java.util.Scanner;
/**
* 学习if语句3(多分支)
*
* 1、导包:import java.util.Scanner;
* 2、创建对象:Scanner jianpan = new Scanner(System.in);
* 3、使用键盘
*
*
* 步骤:先判断第一个if语句,如果条件成立,执行代码,程序结束,后续代码不做
* 否则执行else下面的第二个if语句,如果条件成立,执行代码,程序结束,后续代码不做
* 否则执行else下面的第三个if语句,如果条件成立,执行代码,程序结束,后续代码不做
* .....可以有n个
* else {
* 最后一个
* }
*/
class IfDemo3 {
/**
* java程序运行入口
* jvm自动加载main方法
*/
public static void main(String[] args) {
Scanner jianpan = new Scanner(System.in);
System.out.println("请输入您的考试成绩:");
int score = jianpan.nextInt();
if (score < 0 || score > 100) {
System.out.println("成绩不合法!");
} else if (score >= 85 && score <= 100) {
System.out.println("您的成绩是优秀!");
} else if (score >= 75 && score < 85) {
System.out.println("您的成绩是良好!");
} else if (score >= 60 && score < 75) {
System.out.println("您的成绩是合格!");
} else {
System.out.println("您的成绩不合格!");
}
}
}
if语句最常用的一个用法则是if语句的嵌套,这个是最最常用的:
import java.util.Scanner;
/**
* 学习嵌套的if语句
*/
class IfDemo4{
/**
* java程序运行入口
* jvm自动加载main方法
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int time = 10;
System.out.println("请告诉裁判您的时间:");
if (time < 10) {
System.out.println("恭喜你参加决赛");
int number = sc.nextInt();
if (number < 8) {
System.out.println("您没有坚持下来!out");
} else {
System.out.println("8000米完成!");
}
}else {
System.out.println("out");
}
}
}
if语句可以针对常量判断,也可以针对布尔类型的值判断执行内容,也可以匹配常量,但是如果要匹配常量,更多的是使用Switch语句:(一些解释:main方法前面的java程序入口,jvm自动加载main方法以后一直会有,第一个老师告诉我们这样写注释是一个好习惯)
import java.util.Scanner;
/**
* 学习switch选择结构
*
* switch 语句的格式:
* switch(表达式) {
* case 常量1 : --
* 语句体1; | ----> 这是case语句1
* break; --
*
* case 常量2 : --
* 语句体2; | ----> 这是case语句2
* break; --
* ....
* case 常量n : --
* 语句体n; | ----> 这是case语句n
* break; --
*
* default : --
* 语句体n + 1; | ----> 这是default语句
* break; --
* }
*
* 格式的解释:
* 1、以单词switch开始,后面圆括号中紧跟表达式
* 2、用大括号包围switch各种语句体
* 3、用case来进行常量匹配,表达式和常量匹配的类型(包含int及比其类型更小的数据类型:byte、short、int、char)jdk5之前
* 注意:jdk5之后可以用枚举类型、jdk7之后又多了字符串类型
* 4、语句体就是程序代码:System.out.println();可以是多行
* 5、break;从当前的switch语句中结束
*
* 面试题:
* byte、long、String都可以做表达式的类型吗?
*
* 举例:
* 用星期(星期一。。。星期日)
*
* 键盘录入数据:1、导包 import java.util.Scanner; 写在class之前
* 2、创建对象 Scanner input = new Scanner(System.in);
* 3、录入数据
*/
class SwitchDemo1 {
/**
* java程序运行入口
* jvm自动加载main方法
*/
public static void main(String[] args) {
// 要使用一个键盘
Scanner input = new Scanner(System.in);
// 人机交互开始
System.out.println("今天星期几?");
int today = input.nextInt();
switch (today) {// 5
case 1 :
System.out.println("今天是星期一");
break;
case 2 :
System.out.println("今天是星期二");
break;
case 3 :
System.out.println("今天是星期三");
break;
case 4 :
System.out.println("今天是星期四");
break;
case 5 :
System.out.println("今天是星期五");
break;
case 6 :
System.out.println("今天是星期六");
break;
case 7 :
System.out.println("今天是星期日");
System.out.println("您的假期不足,请充值!");
break;
default :
System.out.println("您输入的星期不合法!");
break;
}
}
}
用switch语句的注意事项,不能匹配变量:
import java.util.Scanner;
/**
* switch语句注意事项
*
* 代码22行:case后的比较不能用变量来做
* 代码27行:case后不能出现重复的值
* default语句可以省略(代码55行)且位置可以不用放在最后(代码28行):
* 请注意:在此例中case 1、case 2、case 3、case 4、case 5、case 6、case 6、default是并列关系
*
* 不论default在哪里,要先把所有的case配置一遍:没有配置上,做default(与位置无关),如果配置上,不做default
* switch看见break;就结束,不一定执行到代码的最后
*/
class SwitchDemo2 {
/**
* java程序运行入口
* jvm自动加载main方法
*/
public static void main(String[] args) {
// 要使用一个键盘
Scanner input = new Scanner(System.in);
// 人机交互开始
System.out.println("今天星期几?");
int today = input.nextInt();
// 不能用变量
// int tuesday = 2;
switch (today) {
default :
System.out.println("您输入的星期不合法!");
break;
case 1 :
//case 2 :
System.out.println("今天是星期一");
break;
//case tuesday :
case 2 :
System.out.println("今天是星期二");
break;
case 3 :
System.out.println("今天是星期三");
break;
case 4 :
System.out.println("今天是星期四");
break;
case 5 :
System.out.println("今天是星期五");
break;
case 6 :
System.out.println("今天是星期六");
break;
case 7 :
System.out.println("今天是星期日");
System.out.println("您的假期不足,请充值!");
break;
/*default :
System.out.println("您输入的星期不合法!");
break;*/
}
}
}
由于代码量的增多,选择结构并不能满足我们的编程需要,这个时候,循环结构体系则发挥了总要的结构,循环结构主要有for循环,while循环,do while循环,对于while循环和Do while循环来讲,唯一的区别只是 do While 循环先执行一次再判断。能确定循环次数的用for循环,否则用while循环的居多:下面分别整理一下for 循环和while循环的两个一般代码:
for循环:
/**
* 计算1-100之间的数字之和
*/
class ForDemo1 {
/**
* java程序运行入口
* jvm自动加载main方法
*/
public static void main(String[] args) {
/*
a = 1 + 2
a + 3
a + 4
a + 5
a = a + ?
System.out.println(1+2+3+4+5);
int sum = 0;
for (int i = 1; i <= 100; i++) {
// i = i + i;
sum += i;
}
System.out.println(sum);*/
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
// sum = sum + i;
sum += i;
}
}
System.out.println(sum);
}
}
for循环经典案例之水仙花术:
/**
* 水仙花数
*
* abc == a*a*a + b*b*b + c*c*c
*
* 个位:100 % 10 = 0
* 十位:100/10 = 10 % 10 = 0
* 百位:100/10/10 = 1;
*/
class ForDemo2 {
/**
* java程序运行入口
* jvm自动加载main方法
*/
public static void main(String[] args) {
int count = 0;
for (int i = 100; i<= 999; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
int he = (ge * ge * ge) + (shi * shi * shi) + (bai * bai * bai);
if (i == he) {
count++;
System.out.println(i);
}
}
System.out.println(count);
}
}
while循环演示:水仙花数改进版,配合对比for循环理解掌握:
/**
* 用两种不同的循环(for、while)进行水仙花数的演示
*
*
*
*/
class WhileDemo1 {
/**
* java程序运行入口
* jvm自动加载main方法
*/
public static void main(String[] args) {
// abc = a^3 + b^3 + c^3
// for循环
int ge = 0, shi = 0, bai = 0;
for (int a = 100; a <= 999; a++) {
ge = a % 10;
shi = a / 10 % 10;
bai = a / 100;
if (a == (ge * ge * ge) + (shi * shi * shi) + (bai * bai * bai)) {
System.out.println(a);
}
}
// while循环
int b = 100;
int g = 0, s = 0, ba = 0;
while (b <= 999) {
g = b % 10;
s = b / 10 % 10;
ba = b / 100;
if (b == (g * g * g) + (s * s * s) + (ba * ba * ba)) {
System.out.println(b);
}
b++;
}
}
最后,今天的日志以三个跳转语句的关键字结尾:break:跳出循环 ,continue:跳出本次循环,继续执行其他循环,return:跳出方法。