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\tools.jar
Path:%JAVA_HOME%\bin %JAVA_HOME%\jre\bin
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性别:男