A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

zxq1996

初级黑马

  • 黑马币:20

  • 帖子:7

  • 精华:0

© zxq1996 初级黑马   /  2019-8-18 22:09  /  962 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zxq1996 于 2019-8-20 21:59 编辑

经过这几天的学习,我学会了一下简单的Java用法,下面是我总结的一些知识笔记。要能熟练的使用Java,就必须掌握这些基础知识。
上课笔记:


1.循环语句
for、switch、while、do while;
for语句的结构
        for(①初始化语句; ②条件判断语句; ③条件控制语句){
                ④循环体语句;
        }
        执行流程:
        1. 执行初始化
        2. 执行条件判断语句,如果结果是true,就执行循环体语句;如果是false,for循环结束
        3. 执行条件控制语句,再次执行条件判断语句,重复第二步骤。
        ①②④③…②④③直到②的结果是false就结束

2. while循环
        基本格式:
        while(条件判断语句){
                循环体语句;
        }

        完整格式:
        初始化语句①;
        while(条件判断语句②){
                循环体语句③;
                条件控制语句④;
        }

        执行流程(基于完整格式):
       
        ① ②③④ ②③④ ②③④
        1. 执行初始化语句
        2. 执行条件判断语句
                结果为false,while循环结束;
                结果为true,执行while循环体语句
        3. 执行条件控制语句
        4. 重新执行第二步,直到条件判断语句的结果为false。
语句格式:
3、switch
        switch(表达式){
                case 值1:
                        语句1;
                        break;
                case 值2:
                        语句2;
                        break;
                ……
               
                default:
                        语句n+1;
                        [break;]
        }
        执行流程:
                计算表达式的值,然后从上往下和各个case后面的值进行比对,只要发现相同,就执行该case的语句,遇到break,switch语句结束;如果所有的case都不匹配,执行default的语句。       
        case穿透
                如果某个case内没有break,在执行该case内语句后,并不会再次判断后面case的值是否匹配;
                而是直接执行后面case中的语句,直到遇到break或者语句结束。
4、do while
        do{
             循环体语句
                    }
                   while(条件判断语句)
        执行流程:先执行一次循环语句语句,再执行条件判断语句,如果返回false循环结束,否则就继续循环,
5、键盘输入
      ①第一步先打包,
        import  java.util.Scanner;(放在类方法前)
      ②第二步创建一个空对象
        Scanner sc=new Scanner(System.in);
      ③第三步键盘录入
        int型 int r=sc.nextInt();
        String类型   String r=sc.nextLine();
6、产生随机数
①第一步先打包,
        import  java.util.Random;(放在类方法前)
      ②第二步创建一个空对象
        Random sc=new Random(System.in);
      ③第三步键盘录入
        int型 int r=sc.nextInt(n);(产生的随机数范围是[0,n));
7,数组
        将一串相同类型的数据放在同一个容器中,
         定义一个数组有动态初始化和静态初始化两种方法。
         动态初始化: 数据类型[] 数组名=new 数据类型[数组长度]
          它有默认的初始值都为零,
          静态初始化(系统指定数组长度,程序员指定数组元素内容)
                基本格式:数据类型[] 变量名 = new 数据类型[]{元素1, 元素2,……}
                简化格式(推荐使用):数据类型[] 变量名 = {元素1, 元素2,……}
  数组操作过程中常见的两个问题
                a) 索引越界
                        发生情况:使用了数组中不存在的索引
                        发生原因:该数组中不存在你要操作的索引
                        解决办法:使用数组中存在的正确索引
               
                b) 空指针异常
                        发生情况:数组变量没有指向一个具体的数组(对象)         
8、方法
    方法是指具有一定功能的代码集合,它必须先定义再使用,在创建方法后需要手动使用。
方法的格式为:
①不带参数无返回值
        public static  void 方法名(){
                          方法体
                }
        使用方法:
                方法名();
注意事项:
                a. 方法定义在类里面,main方法外面(方法不能嵌套定义)
                b. 方法的调用,是在其他方法(目前是在main)里面
                c. 一个作用:提高代码的复用性
                d. 方法的调用时在栈内存中,方法被调用时进栈,调用完毕后方法出栈
②带参数无返回值的方法
        定义格式:public static void 方法名(参数列表){
                                方法体
                          }
        使用:
                方法名(与参数列表匹配的变量/常量);
               
        参数列表:
                组成: 数据类型1 变量名1, 数据类型2 变量2,……
                1. 数据类型和 变量名必须成对出现
                2. 调用时候,传的值或变量需要与定义时参数列表匹配
                3. 参数列表匹配要求的是:各个参数的类型、参数数量、参数顺序都匹配
③有返回值的方法
        格式:
        public static 返回值类型+方法名(参数){
                方法体
        return   数据(必须与返回值类型一样,类型是void时,不需要写返回值)
        }
方法调用过程中参数传递细节
                当参数是基本数据类型时,形参的改变不会影响实参
                当参数是引用数据类型时,形参的改变会影响实参
方法重载:在同一个类中,存在方法名相同,参数列表不同的多个方法,这些方法之间就构成了方法重载。它能够减少方法名的使用。
9、面向对象
什么是面向对象?
             面向对象是Java里面的一个非常优秀的编程思想,区别于面向过程的思想,面向对象的思想更符合生活的思考方式。
             面向对象不只关注与解决问题是细节,更多的是关注能够解决问题的对象,以及对象的属性、行为。这种方式更贴近实际,对于维护大型项目或者复杂逻辑非常有用。
①类和对象
生活中所有的内容和事物,都可以用一个名词概括:东西
在Java中,所有的内容和事物,也都可以用一个名词概括:对象。       
        万物皆对象
Java中:类和对象的关系
        类是对象的抽象
        对象是类的实体
类的特点:具有相同属性和行为的一类事物的集合/抽象   类是对象的数据类型
        面向对象
        面向对象是一种思想,一种解决问题的思路
        面向过程:只关注解决问题的过程,而不关注多个解决方法之间的关系等
        面向对象:使用面向对象思想完成一个功能,强调找一个具有该功能的对象,使用这个对象完成功能
        面向过程:关注的是解决问题的具体思路
        面向对象:关注的是能解决该类问题的对象
2. 类的定义之成员变量和成员方法
类定义的格式:
        public class 类名{
                成员变量;
                数据类型 成员变量名1;
                数据类型 成员变量名2;
                .....
               
                成员方法(没有static关键修饰的方法,其他与之前方法的定义格式都一样):
                public 返回值类型 成员方法名1(){……}
                public 返回值类型 成员方法名2(){……}
        }
在创建了类后需要进行测试,在main方法中通过创建被测试类的对象来使用其成员变量和成员方法。
对象创建格式:
                类名 变量名/对象名 = new 类名();
                        例如:Scanner sc = new Scanner(System.in);
                  Random r = new Random();
成员的使用方法:
                对象名.成员(成员变量和成员方法)
                         例如:sc.nextInt();--调用Scanner的成员方法
                   r.nextInt(); --调用Random的成员方法
成员变量和局部变量的区别:
        成员变量定义在类中方法外,局部变量定义在方法中。
                成员变量的值储存在堆内存中随着对象的创建而创建,有默认的初始值,局部变量储存在栈内存中,随着方法的出现而出现,调用结束而结束。

private
        是一个访问权限修饰符
        能修饰成员(成员变量和成员方法)
        作用:保护成员不被外界直接访问。被private修饰的成员只能在本类中被直接访问
        其他类中想要使用该程序员,就需要通过制定的方法来使用
this关键字
        this用于指代成员变量
        当方法中局部变量和成员变量不重名时,不需要使用this
        当方法中局部变量和成员变量重名时,需要在成员变量前面添加this关键字。解决的是局部变量隐藏成员变量的问题,没有该问题也可以使用this,但是没有意义。
       
        this代表的是当前对象
                谁调用当前方法,当前方法内的this只得就是谁。
               
封装
        面向对象三大特征:封装、继承、多态
       
        封装的原则:
                将成员变量私有化,避免外部程序直接访问,可以通过指定的公共方法访问(getter、setter)
        封装的好处:
                成员变量不能被直接访问,提高了代码的安全性
                使用方法进行操作,提高了代码的复用性
               

构造方法
        构造方法是一个特殊的方法
        没有参数的构造方法一般称为无参构造
                public Student(){}
        有参数的构造方法一般称为有参构造
                public Student(String name, int age){
                        this.name = name;
                        this.age = age;
                }
构造方法使用注意事项
        a. 如果没有手动书写构造方法,系统会默认提供一个无参构造。
        b. 但凡是手动写了任意一个构造方法,系统将不再提供默认无参构造。
        c. 构造方法之间可以重载
        d. 系统根据提供的参数列表决定调用某一个构造方法,没有对应的构造方法则会报错
       
       
        推荐书写方式:
                不管在任何时候,先手动书写一个无参构造
9、API
        应用程序编程接口。
10、String
字符串,
特点:值不能被改变、但是可以被多个共享,字符串的底层是字符数组(JDK8及以前)和字节数组(JDK9及以后)。
构造方法:①创建一个空白字符串
        String s1=new String();
        ②根据字符数组的内容
        char chr=['A','B','C'];
        String s2=new String(chr);
        ③根据字节数组的内容
        byte[] bys={98,97,96};
        String s2=new String(byte);
        ④直接创建,不用创建对象。
        String r=“abc;在定义相同的内容的时候,其对象地址值不会改变。
                一般使用直接创建、打印字符串对象的时候,不会输出其地址值,而是输出内容。
对于引用类型使用==比较的时候,比较的是两个对象的地址值。对于基本数据类型使用==比较的时候数据值是否相同。
判断两个字符串内容是否相同,使用equals()方法来进行比较。
字符串1.equals(字符串2)
boolean c2 = c.equalsIgnoreCase(c1);判断字符串c和字符串c1是否相等,忽略大小写。
boolean c1 = c.endsWith(String suffix);测试此字符串是否以指定的后缀结尾。
String c3 = c.substring(1, 4);输出索引在[1,4)的c3的字符。
String c4 = c.trim();其值为此字符串,并删除任何前导和尾随空格。
String s = c.toLowerCase();将c以小写字母输出来。
String s1 = c.toUpperCase();将c以大写字母输出来。
分割方法的定义是:public String[] split(String regex){....}分割方法使用参数的内容来对字符串进行分割。字符串的分割方法根据参数进行对字符串进行切割,(点符号有着特殊的含义需要进行\\的转义,否则无法正常进行分割字符串,如果去掉\\进行字符串的分割,将无法进行分割,数组的长度是0。)
isEmpty() 判断字符串的长度是否为0
String s="zhizuo";
        String b="chanagleZXQ";
        String c="zxq-love-njy";
        String d="   zxq love njy   ";
        String e="  ";
        boolean b1 = s.equalsIgnoreCase(b);//判断两个数是否相等,不区分大小写
        System.out.println(b1);
        String s1 = b.toUpperCase();//将b全部大写字母输出
        System.out.println(s1);
        String s2 = b.toLowerCase();//将b全部小写字母输出
        System.out.println(s2);
        String sb = s.substring(0, 3);//将s中的字母按照索引[0,3)输出
        System.out.println(sb);
        String t = d.trim();//将d中的开头空白字符和结尾的空白字符删除然后再输出
        System.out.println(t);
        String[] sp = c.split("-");//将c中的字符切割,断点为"-",,此时切割成了一个数组形式;
        System.out.println(sp[1]);
        boolean e1 = e.isEmpty();//判断是否字符串长度为零,空格键也是一个字符
        System.out.println(e1);。
注意:判断一个字符串是否和自己本身反转的数相等,先将String转化成StringBuilder,利用reveser()反转语句,再转换成String类型。
==比较的是地址值。比较内容必须用equals()

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马