基础知识 +考试

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*9for (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性别:男
原文地址:https://www.cnblogs.com/zs0322/p/10921215.html