Java简介:
Java的三个阶段
1.完善期:JDK1.0(1995)~1.2(1998) 2.平稳期:1.3~1.4 3.发展期:1.5(2005)~1.7
在开发上分为:Java SE、EE、ME
J2SE:数据库、接口定义、输入输出、网络编程
J2EE:企业、银行、电信系统
J2ME:电子软件的开发、只能卡、手机、机顶盒
编程语言角度:两种
1.编译型:.exe 文件 用户使用
2.解释型:在服务器进行解释执行,后缀 “*.Java”,运行前会在虚拟机先编译:生成“.class”
安装:
抽象、接口类之前用EditPlus编辑代码,之后用eclipse开发工具
JRE(Java Runtime Environment ):Java运行环境 包括Java虚拟机(JVM Java Virtual Machine)和核心类库
JDK 开发工具包 包含了JRE 。编译(javac.exe)打包(jar.exe)
安装jdk 用dos进java的bin目录
dir:目录
md:创建文件夹
rd:删除文件夹
cd:进入指定文件夹
cd..:上一级
cd:回根目录
exit:退出
环境变量:
“JAVA_HOME”:JDK的路径
“CLASSPATH”CLASSPATH=.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar
Path:%JAVA_HOME%in %JAVA_HOME%jrein
Java语法:
标识符:由字母、数字、_、$组成,不能以数字开头、不能是关键字
变量:
存储单元:
存储最小信息单元叫 “位(bit)”: 小写b表示
最小存储单元 “字节(byte)“:大写B 1个字节是8个位 最大值 99999999
存储单位:1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024M 1TB=1024GB 1PB=1024TB
基础类型:4类8种
整型:byte(-128~127) short int long
浮点:float (常量必须+F) double(默认)
字符:char
布尔型:boolean
定义变量:格式
数据类型 变量名 = 数据值;
int a =100;
注意事项
变量定义后可以不赋值,使用时再赋值,不赋值不能用
public static void main(String[] args) { int x; x = 20; //为x赋值20 System.out.println(x);//读取x变量中的值,再打印 }
变量使用时有作用域限制
public static void main(String[] args) { int x = 20; { int y = 20; } System.out.println(x);//读取x变量中的值,再打印 System.out.println(y);//读取y变量中的值失败,失败原因,找不到y变量,因为超出了y变量作用范围,所以不能使用y变量 }
不可以重复定义
public static void main(String[] args){ int x = 10; double x = 5.5;//编译失败,变量重复定义 }
数据类型转换 :小~大
byte -> short -> int -> long -> float -> double
自动转换:小转大
范围大的数据类型 变量 = 范围小的数据类型值;
强制转换:大转小
范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值;
运算符:
算术运算符
+ - * / %:取模 ++:自增 --:自减
注意:运算符连接字符串,成为字符串
除法 / 两边为整数,取整,舍余。一边有浮点型时,正常规则相除
%:整数取余
整数做被除数,0不能做除数。不然报错
运算符 ++ 、-- 使用
a++(a--):运算符后置时,原有值参与运算,完成后自+-1
++a(--a):运算符前置,先自+-,在赋值
赋值运算
+= -= *= /= %=:运算符作用,将等号左右两边计算,将结果自动强转成等号左边数据类型,在赋值给左边
注意:赋值运算符左边必须是 变量
public class OperatorDemo2 { public static void main(String[] args) { byte x = 10; x += 20;// 相当于 x = (byte)(x+20); System.out.println(x); } }
比较运算符
注意:
赋值运算符“=” 与比较运算符 “==” 符号有区别
赋值= 将 =右边的值赋给左边的变量
比较运算符 == 判断 左右变量是否相等
逻辑运算符
逻辑运算通常连接两个表达式 计算后 布尔值结果
短路与 or短路或,只要判断出结果,后备部分不再判断
boolean b = 100>10; boolean b2 = false; System.out.println(b&&b2); // 打印结果为 false System.out.println(b||b2); //打印结果为 true System.out.println(!b2); //打印结果为 true System.out.println(b && 100>10); //打印结果为 true,本行结果的计算方式稍后讲解运算符优先级时解答
运算结果规律:
短路与 &&:有false,结果就是false
短路或 ||:有true,结果就是 true
逻辑非!:原先是true 则变 false,反之!!!!
三元运算符:
格式:(条件表达式)? 表达式1:表达式2; 运算规则:先判断条件表达式,若是true ,结果为表达式1 。若为false,结果为表达式2.
引用数据类型:
流程控制语句:
流程控制Switch:
数组:
方法:
引用数据类型(类)
ArrayList集合:
import java.util.Scanner; class Demo01 { public static void main(String[] args) { /*让用户输入自己的成绩,我们对他的考试成绩进行等级的划分, 如果分数大于80分等级为优,否则, 如果分数大于70分等级为优,否则, 如果分数大于60分等级为优,否则, 等级为差*/ /*Scanner sc=new Scanner(System.in); System.out.println("请输入你的考试成绩:"); Double score=sc.nextDouble(); if(score >80&&score<=100){ System.out.println("你的成绩为优秀"); }else if(score>70&&score<=80){ System.out.println("你的成绩为良好"); }else if(score>60&&score<=70){ System.out.println("你的成绩为中"); }else if(score>=0&&score<=60){ System.out.println("你的成绩为差"); }else{ System.out.println("你输入的有误,请重新输入"); } { }*/ //switch循环是准确值 if循环是范围性 Scanner sc=new Scanner(System.in); System.out.println("请输入一个整数(1-7):"); int week=sc.nextInt(); switch (week) { case 1: case 2: case 3: case 4: case 5: System.out.println("工作日"); break; case 6: case 7: System.out.println("休息日"); break; default: System.out.println("您的输入有误,请重新输入"); break;//default 可以放到任何一句,加与不加都可以,只有当case条件不满足时 才会走它 } } }
class Demo02 { public static void main(String[] args) { /*打印1-100 //用while表达式 int i=5; while(i<=100){ System.out.println(i); i++; }*/ //do while表达 /*int i=1; do{ System.out.println(i); i++; }while(i>=100);*/ //for循环 /*for(int i=1;i<=100;i=i++){ System.out.println(i); } //for循环 都是偶数 for(int i=0;i<=100;i=i+2){ System.out.println(i); }*/ //死循环 /*int i = 0; while(true){ System.out.println(i); i++; if(i>5){ //break; continue;//结束本次 进入下次循环 永远循环下去 } }*/ //for循环 /*for(int i=0;i<10;i++){ if(i==4){ continue; } System.out.println(i); }*/ //99乘法表 外层控制行 内层控制列 /*for(int i=1;i<=9;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+j*i+" "); } System.out.println(); }*/ //四行四列 /*a:for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){ System.out.print("*"); if(i==3){ break a;//a是标记 可以结束外层循环 } } System.out.println(); }*/ /*1.创建一个一维数组 int [] arr=new int [5]; arr[0]=1; arr[1]=8; arr[2]=9; System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); //获取数组长度 System.out.println(arr.length); for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); }*/ //2.定义数组格式 /*String[] arr=new String[]{"a","b","中国"}; //遍历 for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); }*/ //3.定义方式 double[] arr2={1.1,1.2,1.3,5.5}; //遍历 for(int i=0;i<arr2.length;i++){ System.out.println(arr2[i]); } } }
考试
甲骨文人才实训基地Java二阶段测验 姓名___战森___________ 成绩________100_________________ 1. 请写出标识符的定义规定。 标识符不能以数字开头 不能用关键字 可以用字母 数字 $ 下划线组成 2. 判断下面标识符是否表示正确: 1yyy_o (错误) Demo02 (正确) Abc$2 (正确) Class (正确) Text!p (错误) 3. 请计算一下50MB是多少bit? 50mb=50*1024*1024*8=419430400bit 4. 请写出八种基本数据类型 byte short int long char boolean double float 5. 请写出你所知道的引用数据类型 String Scanner 数组 集合 6. 编写程序求 1+3+5+7+……+99 的和值 public static void main(String[] args) { int sum = 0; for(int i = 1; i < 100; i = i+2) { sum = sum + i; } System.out.println(sum); } //结果为2500 7. 输出所有的水仙花数,所谓水仙花数是指一个数3位数,其每位数字立方和等于其本身,如153 = 1*1*1 + 3*3*3 + 5*5*5 for (int i = 100; i < 1000; i++) { int b = i / 100; int s = (i - 100 * b) / 10; int g = (i - s * 10 - b * 100); if (i == g * g * g + s * s * s + b * b * b) { System.out.print(i + " "); } } //输出结果为153 370 371 407 8. 利用for循环打印 9*9 表 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i+"*"+j+"="+j*i+" "); } System.out.println(); } 9. 定义打印数组元素方法,按照给定的格式打印[11, 33, 44, 22, 55] int[] arr = { 11, 33, 44, 22, 55 }; System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { System.out.println(arr[i] + "]"); } else { System.out.print(arr[i] + ", "); } } 10. 现有一个数组arr[6,9,4,6,2,5,8],请逆序输出数组元素 int [] arr={6,9,4,6,2,5,8}; for(int i =arr.length-1;i>=0;i--){ System.out.println(arr[i]); } 11. switch语句中的表达式中可以是什么类型的值,可以是String类型的吗? byte short int char 枚举 String 可以是String类型 12. 在循环语句中break和continue的区别是什么? Break 作用是跳出循环语句 continue的作用是终止本次循环,执行下一次循环 13.二维数组遍历获取到每一个值 int[][] intArr = {{12,3,8},{11,8,32,7},{13,44,55}}; for(int i =0 ;i<intArr.length;i++){ for(int j=0;j<intArr[i].length;j++){ System.out.println(intArr[i][j]); } } 14.公司年销售额求和 某公司按照季度和月份统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99 int[][] arr = { { 22, 66, 44 }, { 77, 33, 88 }, { 25, 45, 65 }, { 11, 66, 99 } }; int sum = 0; for (int x = 0; x < arr.length; x++) { for (int y = 0; y < arr[x].length; y++) { sum += arr[x][y]; } } System.out.println(sum); //结果为641 15. 什么叫方法重载? 在同一个类中 ,定义的方法名相同并且 参数个数或类型或、顺序不同 16.以下选项错误的是?ABCFG A.获取数组的长度用length方法 B.获取字符串的长度用length属性 C.获取集合ArrayList的长度用length方法 D.获取数组的长度用length属性 E.获取字符串的长度用length方法 F.获取集合ArrayList的长度用length属性 G.获取集合ArrayList的长度用size属性 H.获取集合ArrayList的长度用size方法 17.定义一个学生类Student,包含三个属性姓名、年龄、性别,创建三个学生对象存入ArrayList集合中。 A:遍历集合遍历输出。 B:求出年龄最大的学生,让后将该对象的姓名变为:葫芦娃。 1//创建类 public class Student { private String name; private int age; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } } //创建对象存入集合 Student s1 = new Student(); s1.setName("张三"); s1.setAge(16); s1.setSex("男"); Student s2 = new Student(); s2.setName("李四"); s2.setAge(17); s2.setSex("男"); Student s3 = new Student(); s3.setName("王五"); s3.setAge(18); s3.setSex("男"); ArrayList<Student> list = new ArrayList<Student>(); list.add(s1); list.add(s2); list.add(s3); //遍历集合 for(Student s : list ){ System.out.println("姓名:"+s.getName()+"年龄:"+s.getAge()+"性别:"+s.getSex()); } //结果为 姓名:张三年龄:16性别:男 姓名:李四年龄:17性别:男 姓名:王五年龄:18性别:男 2. int max=0; int maxindex=0; for(int i=0;i<list.size();i++){ if(list.get(i).getAge()>max){ max=list.get(i).getAge(); maxindex=i; } } list.get(maxindex).setName("葫芦娃"); for(Student s : list ){ System.out.println("姓名:"+s.getName()+"年龄:"+s.getAge()+"性别:"+s.getSex()); } //结果为 姓名:张三年龄:16性别:男 姓名:李四年龄:17性别:男 姓名:葫芦娃年龄:18性别:男