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语法基础语法方面的基础,因此觉得王道的视频还行,但肯定不适合完全小白,但其中细节也有很多可取之处,期待接下来的学习