2.王道训练营前提,王道Java视频小结

王道java视频小结

命名部分小结(包括进制和类型转换相关)

package name;

public class KeyWords {

    public static void main(String[] args) {
        int value;//不能数字开头,数字、字母、下划线、$,严格区分大小写
//        包相当于文件夹,不同包可以定义同名类,类比文件夹,方便多人合作
//
//        但要保证包名的唯一,域名(唯一)反转来定义,如com.baidu.name
//        一个包只用小写单词,多级包用域名反转
//        类,首字母大写其他小写(单个单词)Student,多个单词每个单词首字母大写KeyWords
//        变量,单个单词直接小写value,多个单词第一个单词首字母小写其余单词首字母大写intValue
//        常量,单个单词全部大写MAX,多个单词全部大写,单词之间下划线MAX_SIZE
//
//        命名核心原则,见明知意,英语准点

        /*
        多行注释
        */

        /**
         * 文档注释
         */

        //二进制表示0b+二进制如0b1100,八进制表示0+八进制如011表示9,
        // 十进制不做处理,十六进制0x加十六进制
        System.out.println(0xB);

        int a=100;
        byte b=100;
        a=a+b;
        System.out.println(a);
        //小的能运算进大的,大的不能运算进小的
        //必须是同类型,int+byte是把小的转成了int,两个int算
        //默认把小类型转成大类型,大的范围都包含小的
        //转化方向,byte.short.char->int->long->float->double
        b=(byte)(a-b);
        System.out.println(b);
        //确信没问题也可以强制转化,不确信的强制保留了低位可能就错了
        //整数常量2默认int,小数常量2.0默认double
        long e=88888888888L;
        //小写或大写L来让默认的int常量变成long类型
        float f=3.0F;
        //大小写F来让double常量变成float
        double g=3.14e2;
        //3.14*10^2
        b=1+2;
        //错误b=1+200;
        //对于变量编译器无法提前知道,但可以byte=1+2,编译器直接知道1和2而不是不知道
        byte c=1,d=2;
        //错误b=c+d;两个byte先转换成int了,相当于两个int变量(编译器无法直接知道)相加
        //byte.short.char互相不可以转换,而且一旦运算都先变int,字符变成了ASCII码值了
        System.out.println((char)('a'+1));//a对应的是97,强制转回字符才是b

        //变量作用域只在那个{},出了{}内存被回收了
        //变量使用前得初始化(不必在声明时赋值),不然内存里不知道什么玩意
    }
}

各种运算符相关小结

package calculate;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.util.Scanner;

public class Calculate {

    public static void main(String[] args) {

        //+也可以表示正数
        //+中只要有一个字符串,就是字符串拼接,不是简单的加法
        //从左往右可能出现'a'+1+"hello",结果是98hello,最前面没有一个字符串
        // 注意分清两个操作数中有没有字符串

        //除法运算是整除,可以把整数隐式转成小数
        int a = 1;
        int b = 3;
        double c = 1.0 * a / b;
        System.out.println(c);

        //a++,和其他一起运算先a值,a再+1
        //++a,先a+1,再与其他运算

        //逻辑运算是true和false比较,天生就比其他对数的运算符优先级低
        //&与&&,后者比较智能,false值&&任何东西,直接就是false了,单个的后面的还得计算(涉及的值变化会变化)
        //|与||,同理,true值||任何东西,直接就是true,两个都是后面就不计算了(涉及值变化就不会变)
        //两个的相当于后面的计算被短路了,直接没进行

        //异或^,同false,异true

        //判断范围不能1<a<10,得1<a&&a<10

        //左移<<1,相当于*2,前提是左移后没有溢出,不区分符号
        System.out.println(3 << 2);
        //带符号右移,高位补符号位,>>,相当于除2,前提能被除尽
        System.out.println(-2 >> 1);
        //无符号右移,高位补0,>>>,正整数相当于除以2,负数不好把握
        System.out.println(-2 >>> 1);
        //&与运算针对数相应的二进制位,|或运算,^异或相同为0不同为1
        System.out.println(1 ^ 2);
        //任何数和自己异或结果是0,0和任何数异或结果是这个数,满足交换和结合
        //~按位取反,包括符号位,好像是相当于相反数之后再-1
        System.out.println(~-1004);

        //最有效率肯定是直接对位进行运算

        //两个变量交换
        //1.弄个临时的temp(最常用,可读性强)
        //2.a=a+b;b=a-b;a=a-b;有点数学思维的意思,炫技(菜鸡还是老实点吧,也容易被打)
        //3.a=a^b;b=a^b;a=a^b;有点漂亮
        //4.a=(a+b)-(b=a);赋值最优先,去参加最短比赛吧

        //键盘录入对象需要Scanner对象来完成
        //输入的数据可以空格(一次性输入在缓冲区,每有个输入读一个)或者回车(将当前的输入结束)相当于隔开
        //nextin和Boolean都是空格分割,nextline比较特殊是回车来分割,
        // 如果line(读一行字符串)在多个输入的后面打个回车可能line就直接结束了
        //多种不同类型数据的读取,推荐用两个Scanner对象来读,其中一个专门来读字符串
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        System.out.println(10);
        int n=sc.nextInt();
        System.out.println(i);

        //算式?算式1:算式2,根据算式结果true是算式1,false是算式2
        //3数取大
        // temp=a>b?a:b
        // temp>c?temp:c,可以直接嵌套起来,(a>b?a:b)>c?(a>b?a:b):c


    }

}

分支和循环方面小结

package circulation;

public class Circulation {
    public static void main(String[] args) {
//
//        判断if里只能是true或者false,和c++不太一样,即关系表达式
//        三目和双分支基本相同都是二选一
//        但三目必须要有个值来接收,直接输出的话不太行(只是给个操作,没有一个返回值的动作)
//
//        if中注意还有个隐式的用户输出错误的选项
//        switch不能用true或者false,可以是byte、short、int、char、string、枚举
//        default:(也是可以省略的,初学建议不省略)类似于if中的最后一个else
//        default可以放任意位置,但最好加上break,放前面还没有break类似于下面(case穿越现象)
//        break是直接结束了整个switch
//        没有break就会多执行下一个case,直到遇到break;
//        但可以利用一下直接case:不加东西(多个case执行相同的操作)
//        case值不能相同,而且是常量不能是变量,得和switch中类型一致
//
        //if来做判断,switch来做选择蛮好的(只能是有限离散的)

//        String s,s.charAt(0)取字符串第一个字符

        //for循环中定义的变量作用域只在for循环中
        //注意想要东西+空格得"",' '计算会让char转成了int参与运算

        //for循环针对一个明确的范围,while循环针对判断次数不太明确的操作,自己不明确得靠计算机
        //do while就是先执行再判断(至少保证执行了一次),while先判断再执行
        //死循环也有作用,后面多线程回头看
        //增强型for循环,for(数据类型 变量名:数组名),相当于把数组遍历一遍,不方便自己操纵遍历方式

        //循环中控制break直接结束整个循环(只是单层)多层需要多个break,或者给外层循环加个label:
        //通过break label来直接结束外层循环,跟据使用场景的需要
        //continue结束当前循环的一次循环,也必须和if配合根据需要才有意义
        //continue也可以和label配合使用,相当于结束了外层循环的一次循环=break
        //return也可以中止循环,直接所有层都被中止了,也把当前方法中止了

    }
}

最后的思考

​ 本小结只是个人用于一些琐碎知识点的整理,并不是作为标准的学习总结,由于最开始有些c、c++以及Java语法基础语法方面的基础,因此觉得王道的视频还行,但肯定不适合完全小白,但其中细节也有很多可取之处,期待接下来的学习

posted @ 2022-12-31 19:54  学编程爱中医的小陈  阅读(86)  评论(0编辑  收藏  举报