java 1.8 ----java 8 在 dos 窗口里 javac 编译Java代码 java 运行Java代码 jdk和jre jre是Java所需要的运行环境 jdk是Java所需要的开发环境 jvm虚拟机 打开命令提示窗口(dos) 快捷键win+r 输入cmd
| 操作 | 说明 |
|---|---|
| 切换盘符 | E: 盘符名称加冒号 回车 |
| 进入文件夹cd | cd 加上 文件夹的名字 回车 |
| 返回上一级文件夹/退出文件夹 | cd.. |
| 直接返回到磁盘根目录 | cd |
| 查看当前文件夹 | dir |
| 清屏 | cls |
| 退出 | exit |
| 进入多个目录 | cd 加上 文件夹文件夹 |
| tab | 循环访问里面的文件 |
1.简单 2.与平台无关性 跨平台 3.面向对象:封装 继承 多态 4.交互式特性,多线程的机制 5.健壮性又称鲁棒性 6.分布式 7.动态内存管理机智 垃圾回收机制 8.安全性注释
1.单行注释 //注释内容 2.多行注释 3.文档注释关键字
关键字:就是被java语言赋予了特定含义的单词 例如 public int double char ...常量
在运行过程中,其值不可以发生改变的量
| 常量类型 | 说明 | 举例 |
|---|---|---|
| 字符串常量 | 用双引号括起来的内容 | "HelloWorld","程序员" |
| 整数常量 | 不带小数的数字 | 666,-88 |
| 小数常量 | 带小数的数字 | 13.14 , -5.21 |
| 字符常量 | 用单引号括起来的内容 | 'A; , '0', '我'' |
| 布尔常量 | 布尔值,表示真假 | 只有两个值:true,false |
| 空常量 | 一个特殊的值,空值 | 值是:null |
基本数据类型 数值型 整数 : byte short int long 浮点数 : float double 字符型 : char 布尔型 : boolean基本数据类型
数值型 整数型 byte short int long
浮点型 float double
字符型 char
布尔型 boolean
| 类型 | 关键字 | 长度(位) | 长度(字节) | 表示范围 |
|---|---|---|---|---|
| 整数类型 | byte | 8 | 1 | -128~127 -2^7~2^7-1 |
| short | 16 | 2 | -32768~32767 -2^15~2^15-1 | |
| int 默认 | 32 | 4 | -2147483648~2147483647 -2^31~2^31-1 | |
| long | 64 | 8 | -2^63~2^63-1 | |
| 浮点类型 | float | 32 | 4 | -3.403e38~3.403e38 |
| double 默认 | 64 | 8 | -1.798e308~1.798e308 | |
| 字符类型 | char | 16 | 2 | 表示一个字符 'a' '0' '中' |
| 布尔类型 | boolean | 8 | 1 | 取值只有true false |
整数中的int 浮点数中的double 是默认的数据类型
变量格式
数据类型 变量名 = 变量值; int a = 10;
标识符命名规则 1.由大小写字母 下划线 数字,$符号组成 2.开头可以是大小写字母 下划线 $(数字不能作为开头),除了$和_任何符号都不能使用 3.标识符是没有长度限制的 4.标识符不能是关键字 5.见名知其义 String name; 6.区分大小写 1.小驼峰命名规则 userNameAgePhone 首字母小写 变量 方法 2.大驼峰命名规则 UserNameAgePhone 首字母大写 定义类 常量的命名规则 一般全是大写 再加上下滑线_ String USER_NAME="";idea快捷键
格式化代码 Ctrl+alt+L 重命名 shift + F6public class 和 class
如果一个类声明的时候使用了public class 类名必须跟文件名一致 class 类名 与文件名可以不一致 编译也能通过数据类型转换
1.自动转换 自动转换(隐式转换) 1.代码不需要特殊的处理 自动完成 2.规则 数据范围从小到大 2.强制转换 强制转换(显示转换) .特点 代码不能自动转换完成 需要进行特殊的数据处理 2.格式 数据范围小的类型 数据小的变量名=(范围小的类型)原本 数据范围大的 注意事项: 1.强制类型转换一般不推荐使用,因为会损失精度,数据溢出这种情 况 2.byte/short/char 这三个数据类型在参与运算的时候 都会先被 提升为int类型 然后在计算 3.byte/short/char 这三种数据类型都能参与运算 例如 +..char -->ASCII值 4.布尔 boolean 类型不能发生数据类型转换ASCII值
//A B C .....Z 65 66 67...90 //a b c .... z 97 98 99....122 //0 1 2 3... 48开始57运算符
运算符:进行特定操作的符号 + - * / 四则运算:+ - * / %取模(取余数)
| 符号 | 作用 | 说明 |
|---|---|---|
| + | 加 | |
| - | 减 | |
| * | 乘 | |
| / | 除 | |
| % | 取余 | 获取的是两个数据做除法的余数 |
对于一个整数来说 除法用的是整除 整数除以整数结果仍然是整数 只看商不看余数 只有对于整数的除法来说 取模运算才有余数的意义
注意:
一旦运算中有不同的数据类型 那么结果会是范围比较大的数据类型
+:符号1.对于数值来说就是简单的加法 a + b ; 2.对于char 类型的数据 会被提升为int类型 然后在进行计算 char-int 参照ASCII表 3.String字符串(首字母大写,并且不是关键字)+代表字符串连接 任何数据类型在和字符串进行连接的时候 结果都会变成字符串自增自减运算符
自增运算符:++ 自减运算符:-- 基本含义:让一个变量自身涨1 或者让一个变量自身降1 使用格式:可以放在变量的后面 或者 变量的前面 使用方式: 1.单独使用:不和其他运算混合在一起 自己独立成为一个步骤 2.混合使用:和其他操作混合在一起 区别: 1.在单独使用的时候 前++和后++ 没有任何区别 2.在混合使用的时候 1.++在前 先自身加1 在参与运算 2.++在后 先参与运算 在自身加1 3.常量不能使用自增自减 //30++;错误的写法赋值运算
| 符号 | 作用 | 说明 |
|---|---|---|
| = | 赋值 | a=10,将10赋值给变量a |
| += | 加后赋值 | a+=b,将a+b的值给a |
| -= | 减后赋值 | a-=b,将a-b的值给a |
| *= | 乘后赋值 | a * =b,将a * b的值给a |
| /= | 除后赋值 | a/=b,将a/b的商给a |
| %= | 取余后赋值 | a%=b,将a/b的余数给a |
| 符号 | 说明 |
|---|---|
| == | a==b,判断a和b的值是否相等,成立为true,不成立为false |
| != | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
| > | a>b,判断a是否大于b,成立为true,不成立为false |
| >= | a>=b,判断啊是否大于等于b,成立为true,不成立为false |
| < | a |
| <= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意事项: 1.比较运算符结果一定是一个布尔值,成立 true,不成立 false 2.如果需要进行多次判断 , 不能连着写 数学中 1逻辑运算符 短路逻辑运算符
符号 作用 说明 & 逻辑与 a&b,a和b都是true,结果为true,否则为false | 逻辑或 a|b,a和b都是false,结果为false,否则为true ^ 逻辑异或 a^b,a和b结果不同为true,相同为false ! 逻辑非 !a,结果和a的结果正好相反
符号 作用 说明 && 短路与 作用和&相同,但是有短路效果 || 短路或 作用和|相同,但是有短路效果 注意事项: 逻辑与&,无论左边真假,右边都要执行 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行. 逻辑或|,无论左边真假,右边都要执行. 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行 最常用的逻辑运算符:&&,||,! 短路与 && 短路或 || 具有短路的效果 如果可以根据左边判断得 到最终的结果 那么右边的代码将不执行,能节省一定的性能 注意事项 1.逻辑运算符只能用于boolean值 2.短路与 && 短路或 || 左右各需要一个boolean值 但是取 反只需一个boolean值即可 3.短路与&& 短路或|| 如果有多个运算 可以连续写 两个条件的 A&&B 多个条件的 A && B && C && D 4.数学 1三元运算符(三目)1&&X<4 语法:
数据变量 变量名 = 条件判断? 表达式一:表达式二 1.条件判断 是否成立 如果为true 表达式一 如果为false 表达式二char 取值范围 0-65535
流程控制语句1.if 单分支语句 2.if else 双分支语句 3.if else if else 多分支语句 4.swtich case 多分支语句 循环语句 1.for 循环 2.while 循环 3.do while 循环 跳转语句 break continueif 单分支语句语法格式 if(条件表达式){ 执行的代码 } 条件判断表达式 返回值必须是true 或 false (boolean)if else 双分支语句语法格式 if(条件表达式){ 执行的代码1 }else { 执行的代码2 } 条件判断表达式 返回值必须是true 或 false (boolean) 执行流程 条件表达式 结果 为true 执行代码1的语句 结果 为false 执行代码2的语句回顾1.变量 (三部分) 数据类型 变量名 = 变量值 数据类型 变量名; 变量名 = 变量值; 2.遵循驼峰命名 不使用汉字 尽量使用英文字母 不能是关键字 见名知意 下划线(_) $ 不能是数字开头 区分大小写 3.基本数据类型 byte short int long float double char boolean 引用数据类型 String char 0-65535 0-2^16-1 默认的整数类型 int 默认的浮点类型 double long a = 100l; float f = 3.4f; byte short char 参与运算会将数据类型提升为int 在参与运算符 byte a = 5 ; short b = 10; int c = a + b; 4.运算符 + - * / %(取模) 赋值运算 = += -= *= /= %= ++ -- 自增自减运算符 单独使用的时候 ++在前在后没有区别 ++在前 先自身加一 在参与运算 ++在后 先参与运算在自身加一 关系运算符 最终返回一个boolean值 > < >= <= == != 逻辑运算符 与& 或| 非! 短路运算符 && 两边都为true 结果才为true || 只要有一个为true 结果就为true ! 取反 三元运算符 数据类型 变量名 = 条件表达式?表达式一:表达式二; 条件表达式为true 取值表达式一 反之 取值表达式二 数据类型转换 自动转换 小----->大 强制转换 大----->小 int a = 5; byte b; b=(byte)a; boolean 类型不能发生转换 5.条件分支语句 if(条件表达式){} if(条件表达式){}else{}条件分支语句代码执行顺序 1.顺序语句 2.分支语句 就是选择语句 3.循环语句 反复重复执行某一段代码 if(){} if(){}else{} 控制台录入 Scanner 1.导包 import java.util.Scanner;(会自动导入) 2.创建对象 Scanner sc = new Scanner(System.in); 将鼠标放到Scanner上面 会有提示 import class 导包 import ja... 3.使用 数值型 sc.next数据类型(); sc.nextInt() sc.nextDouble() 字符串 sc.next(); 没有 char 类型的输入 4.多条件分支语句 格式: if(关系表达式1){ 语句体1; } else if (关系表达式2){ 语句体2; } ... else { 语句体n+1; } 1.判断关系表达式1 如果为true 语句体1 如果为false 判断关系表达式2 true 语句体2 ... 如果都不符合的情况下走最后的else 5.Switch语句 switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; } 注意事项 1.case 穿透 如果没有break 会继续执行 直到遇到一个break程序才终止 2.case 后面跟的是一个具体的值 不能是变量 也不能是多个值 也不能是范围 3.case 后面的值 不能重复 4.switch 可以接收六种变量 byte short int char String(java7) 枚举(java5)循环重复的做某一件事情 格式: for(初始化语句;条件判断语句;条件控制语句){ //循环体语句; } 执行流程 for(int i=0;i<5;i++){ //循环体语句; } 1.初始化i为0 2.i<5 的值 返回的是true 走循环体语句 3.i++ i的值会增加1 i=5 2.i<5 返回的值是false 则循环结束 跳出循环体While循环语法格式 while(条件判断表达式){ //循环体; 控制语句(计数器); } 执行流程 int b = 0; while(b<5){ System.out.println(b); b++; } 1.判断b的值是否小于5 为true就执行一次循环体 b++ 2.循环第一步 直到b的值不小于5 为false的话 才跳出循环 while 在不知道要循环多少次的情况下 推荐使用while for 在明确使用多少次的情况下 3.死循环 while的死循环 while(true){} for的死循环 for(;;){}Do While循环1.语法格式 do { //循环体; 条件控制语句; }while(判断条件); 三种循环的区别 for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行) do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断) 如果条件判断重来没有满足过的时候,那么 for 和 while会执行0次 但是 do...while 会至少执行一次 for循环变量定义在小括号里面 只有循环内部才可以使用 但是 while 和 do...while 在循环外定义控制条件 所以循环结束后还可以接着使用 2.死循环格式: for(;;){} while(true){} do{}while(true); while死循环格式是最常用的 命令提示窗口中Ctrl+c可以结束死循环 3.break 和 continue 的区别 continue:跳过某次循环体内容的执行,继续下一次的执行 break:终止循环体内容的执行,也就是说结束当前的整个循环 4.循环嵌套 for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ } } 每次执行外层循环 内层循环会执行结束为止随机数Random1.导包 import java.util.Random; 2.创建对象 Random r = new Random(); 3.获取随机数 int a = r.nextInt(10)+1 获取数据的范围[0,10)包含0 但不包含10数组数组的概念:是一种容器,可以同时存储多个数据 数组的特点: 1.数组是一种引用数据类型 2.数组中存放的值类型必须统一 3.数组长度在运行期间不可以改变 数组的定义格式: 1.动态初始化(指定长度) 数据类型[] 数组名 = new 数据类型[数组长度] int[] arr = new int[5]; int arr[] = new int[5]; 2.静态初始化(指定数组里面的内容) //标准格式 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...} //省略的格式 数据类型[] 数组名 = {数据1,数据2,数据3...} int[] arr =new int[]{1,2,3,4}; int[] arr = {1,2,3,4}; 左侧数据类型:也就是数组中保存的数据类型 全都是统一的数据类型 左侧中括号:代表是一个数组 左侧数组名称:数组的名字 右侧new:创建数组 右侧的数据类型:必须和左边保持一致 右侧的中括号:数组中可以保存多少个数据 是int数字 注意事项: //省略的格式不允许分开写 int [] arr4; //arr4 = {1,2,3,4} 数组访问方式 数组名[索引]; 动态初始化: 使用动态初始化数组的时候 其中的元素会有默认值 规则如下: int 默认值 0 double 默认值 0.0 String 默认值 null char 默认值 'u000' boolean 默认值 false 常见的异常 索引越界,访问了数组中不存在的索引对应元素,造成索引越界问题 索引越界异常 ArrayIndexOutOfBoundsException 空指针异常,访问的数组已经不再指向堆内存的数据,造成空指针异常 空指针异常 NullPointerException 遍历数组 int[] arr = {1,2,3,4,5,6}; for(int i=0;i<=5;i++){ arr[i]; } 新型for循环 增强for循环 格式 for(元素的数据类型 变量名:数组名){} //每次循环的数值 就是数值中每个元素的值 } 数组排序: 1.冒泡排序 2.Arrays.sort(数组名) 默认是升序排序 3.数组扩容 Arrays.copyOf(数组,新数组长度) 4,数组填充 Arrays.fill(数组名,填充的内容) 5.将数组转换为字符串输出toString()Arrays1.Arrays.sort(数组名) //排序 2.Arrays.fill(数组名,填充的内容) //填充 3.Arrays.copyOf(数组名,新的数组长度) //扩容 4.Arrays.toString(数组名) //数组转字符串 5.Arrays.binarySearch(数组名,获取下标的元素值) //二分查找法 使用前一定要排序 6.数组名.clone(); //数组克隆 7.Arrays.equals(数组1,数组2);//判断两个数组是否相等 返回一个boolean值 true相等 false不相等二维数组/锯齿数组1.定义方式 数据类型[][] 数组名 = new 数据类型[长度][长度]; int[][] num = new int[5][4]; 2.第二种 数据类型[][] 数组名 = new 数据类型[长度][]; int[][] num = new int[5][]; 3.第三种 数据类型[][] 数组名 = {{元素1,元素2,元素3},{元素1,元素2,元素3},{元素1,元素2,元素3}}方法(method)方法定义: 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程称为定义方法 方法创建后并不是直接运行的,需要手动使用后才执行,该过程称为方法调用 方法定义格式 修饰符 返回值类型 方法名称(){ //方法体 } 注意事项: 1.方法定义的先后顺序无所谓 2.方法必须挨着的,不能再一个方法的内部定义另外一个方法 3.方法定义好之后,不会自动执行,必须调用才可以执行 带参数的方法的定义 单个参数定义格式 修饰符 返回值类型 方法名称(数据类型 参数){ //方法体 } 多个参数定义格式 修饰符 返回值类型 方法名称(数据类型 参数,数据类型 参数){ //方法体 } 注意: 如果有多个参数的情况下,每个参数使用逗号进行隔开 参数前必须要加数据类型 带返回值的方法定义 修饰符 返回值类型 方法名称 (数据类型 参数){ //方法体 return 返回的数据; } public int add(){ return 只能是int类型; }方法(method)1.定义方法的格式 修饰符 返回值类型 方法名(参数类型 参数){//方法体} public static void getSum(){//方法体} 2.带参数的方法 3.带返回值的方法 4.return:两个作用 第一个停止当前的方法,第二个将后面的返回值返回给调用者 5.注意事项 1.方法定义应当在类当中,并且方法里面不能再嵌套方法 2.方法定义前后顺序是无所谓的 3.方法定义好之后不会自己执行,如果希望方法执行,需要调用 单独调用 打印调用 赋值调用 4.如果方法有返回值的话 必须加上return 后面再加上返回值 如果方法没有返回值 就用void 5.return 返回的数据类型 必须和方法返回的类型相对应上 6.void 没有返回值的方法 不能写return+值 只能写return自己 7.void 没有返回值的方法 return 在方法中最后一行可以省略 8.一个方法中可以有多个return语句,但是必须保证同时只有一个会被执行 并且return不能连着写方法的重载(overload)6.方法的重载(overload):多个方法的名称一样,参数列表是不一样的 好处:只需要记住一个方法名就可以,就可以实现类似的多个功能 方法重载与下列因素有关 多个方法具有相同的方法名 1.参数的个数不同 2.参数的数据类型不同 3.参数的多类型顺序不同 4.多个方法在同一个类中 方法重载与下列因素没有关系 1.与参数的名称无关 2.与方法的返回值类型无关(不能通过返回值来判断两个方法是否相互构成重载)7.方法参数传递 对于基本数据类型的参数,形式参数的改变,不影响实际参数的值 对于引用数据类型的参数,形式参数的改变,影响实际参数的值;
注:考试时间90分钟,请将答案填写到答题卡上,试卷上不允许作答
一、选择题:(共16题、每题2分、共32分)
1.对于switch/case语句以下说法正确的有。()
A、default语句是可选的,但是如果出现default则必须位于所有的case后面
B、case子句后面的值必须是常量,且不可重复
C、switch后面的表达式的值如果是数值型,则必须是可精确匹配的整数值,如intlong,而不能是浮点数
D、case后面的break是必选的,不能省略break
2.设int x=1,float y=2,则表达式 x / y的值是:()
A.0 B.1 C.2 D.以上都不是3. 在JAVA中,下列哪些说法是正确的( )
A.java源文件的扩展名为.java
B.写好的java源程序可以直接运行
C.编写的源程序必须先编译后才能运行
程序员可以读懂扩展名为.class的文件
4.下列标识符哪个是合法的( )
A.class
B.$abc
C.1234
D._name
5.下面哪些赋值语句是正确的?()
A. long test = 012;
B. float f = -412;
C. int other = (int) true;
D. byte b = 128;
6.下列代码运行的结果是( )
public static void main(String[] args) {
int x = 4;
int y = 5;
if(x++>4 & ++y>5) {
x++;
}
System.out.println("x=" + x + ",y=" + y);
}
A. x=4,y=5
B. x=4,y=6
C. x=5,y=6
D. x=6,y=6
7.尝试运行下面的代码会发生什么?( )
public class Test {
public static void main(String[] args) {
boolean m = true;
if (m = false) {
System.out.println("true");
} else {
System.out.println("false");
}
}}
A.输出字符串”true”
B.输出字符串”false”
C.编译时错误
D.运行时错误
8.和下面代码能完成相同的选项是( )
class Demo {
public static void main(String[] args) {
int i = 1;
int sum = 0;
while (i <= 100) {
if (i % 2 == 0) {
sum = sum + i;}
i++;}
System.out.println(sum);}}
A. for (int x =1; x<=100;x++){ sum=sum+x;}//求1到100的和
B. for (int x =0; x<=100;x+=2){ sum=sum+x;}//求1到100之间偶数的和
C. for (int x =1; x<=100;x+=2){ sum=sum+x;}//求1到100之间奇数的和
D.上述全对
9.编译并运行以下代码将发生什么? ( )
public static void main(String[] args){
char digit = 'a';
for (int i = 0; i < 10; i++){
switch (digit){
case 'x' :
{
int j = 0;
System.out.println(j);}
default :
{
int j = 100;
System.out.println(j);}}}
int i = j;
System.out.println(i);
}
A.输出11次100
B.输出10次100,然后抛出运行期异常
C.编译错误,因为变量i不能在main()方法中被声明2次
D.编译错误,因为变量j不能在main()方法中被声明2次
E.以上都不对
10.System.out.println("5" + 2);的输出结果应该是( )。
A 52 B 7 C 2 D 5
11.下面的方法,当输入为2的时候返回值是多少?( )
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
A.0 B.2 C.4 D.10
12.请分析下面的代码的结果
int num = 90;
System.out.println( num ++ );
运行结果:( )
A.90 B.91 C.89 D.92
13.请分析下面的代码的结果()
double a = 89.5;
int b = (int)a + 10;
System.out.println(b);
A.89.5 B.99 C.100 D.90
14.下面命令中,可以用来正确执行HelloWorld案例的是()
A、java HelloWorld
B、java HelloWorld.java
C、javac HelloWorld
D、javac HelloWorld.java
15.
public class test {
public static void main(String args[]) {
int i=0, j=2;
do {
i=++i;
j--;
} while(j>0);
System.out.println(i);
}
}
A、0
B、1
C、2
D、3
16、请选择以下代码运行结果?()
class xyz {
public static void main(String args[]) {
int i,j,k;
for (i = 0; i < 3; i++) {
for(j=1; j < 4; j++) {
for(k=2; k<5; k++) {
if((i == j) && (j==k))
System.out.println(i);
}
}
}
}
}
A、0
B、1
C、2
D、3
- 填空题(共5题,每空1分,共21分)
- Java基本数据类型有___种,分别是___,___,____,_____,___,____,___,___。
- 请问switch表达式可以是什么数据类型? __, _,___,
3.java语言的特点是什么___,___,___(3)
4.循环语句包括__________ ,_________ , ________。
5.Java控制语句包括_________,__________,_________
- 简答题(共3题,每空4分,共12分)
1. 请简单描述一下break和continue的区别
2.简述&&和&运算符的区别。
3.. 请写出for循环的语法结构并概括与while
- 编程题(3题,共35分)
- 韩嫣参加计算机编程大赛
如果获得第一名,将参加麻省理工大学组织的1个月夏令营
如果获得第二名,将奖励惠普笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,不给任何奖励
- 求1-100之间的数据和
3、编写程序,判断一个三位数是不是水仙花数。水仙花数指的是个三位数,其各位数字立方和等于该数本身。 例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方



