对Java基础语法的个人见解
(混杂着很多奇怪的、系统自动生成的吐槽)(确信)
Mad_Fish 2022.10.08
一、变量
简答题1:变量在程序中的作用?(6分)
通常来说,任一变量有3个基本要素……
1. 类型
(1)整型
byte
,short
,int
,long
四种整型,储存能力渐增
这其中int
恐怕是最常用的整型了吧!查到的原因说是与32位计算机的性质相关
(但是我没有去深究,总之byte和short我是从来没见谁用过……)
作为最为常用的变量类型之一,务必要记住int的取值范围!
(别看我,我没记住,我就只知道是±21亿多啦)
当数据大小超过int
范围时就不得不请出long
了(区区±9223372036854775807不是跟你开玩笑的)
【注意】long型的数字务必要在结尾加上字母L !!!!! long型的数字务必要在结尾加上字母L !!!!! long型的数字务必要在结尾加上字母L !!!!!
如果long
都不够用的话,当然要请出伟大的unsigned long long
(啊走错门了)
你可以使用java.math.*
下的BigInteger
(很大的大整型)来一劳永逸地解决这种事……
(不会只有C++必须要写高精度吧!不会吧不会吧!)
(2)浮点型(我更愿意喊你小数型)
float
,double
两种不同精度的浮点型
单精度的float已经十分够用了(1.4e-045 ~ 3.4e+038)
请加F在float数字末尾谢谢喵请加F在float数字末尾谢谢喵请加F在float数字末尾谢谢喵请加F在float数字末尾谢谢喵请加F在float数字末尾谢谢喵
double储量更是十分的充足(4.9e-324 ~ 1.8e+308)
(个人更喜欢用double的原因纯粹是因为可以不用加字母在数的末尾)
(如果还不够用的话,BigDemical表示不在话下)
(3)布尔型
boolean
,值要么是false
要么是true
可以用在判断句式里面(毕竟人家值就是true与false)
(只在C++里用过,主要是因为Java的boolean用起来不够顺手)
【当然一些东西用布尔值表示可以便于意义的理解,更加合适。(所以吐槽归吐槽)】
(4)字符型
char
储存一个字符,并且可以通过前缀(int)转换成对应的ASCII码
一开始接触时就认为是非常方便的东西
///////(相比于其他类型的古板吾更爱字符型之灵动!)(大雾)
典型的比如遇到输入的内容是多种类字符混杂时,就会拿出它来配合read()
///////(毕竟自己也没去查过有没有什么更好的输入处理方式)
(5)字符串
String
(呃,虽然字符串可能不应该出现在这里?)
(但是它真的很基础,我觉得应该要放在这里吧!)
约等于字符数组(嗯,约等于)
虽然说是很基础但是功能却十分繁多且强大!
比如长度获取、连接、分割、查找指定字符(串)、替换、判定、比较、大小写转换…………等等
(不要怪我写的草率,我记不住,只会在想用的时候到处百度……)
(应该也不用去特地记忆它们吧)
2、名称
变量总是要有一个名字,那么起名字嘛……也是一门学问对吧……
首先要遵守起名基本规则(字母/数字/下划线,数字不可开头,不可与保留字相同)
(这个错一般不会犯吧)
然后就是“起名鬼才”……
不同人的起名喜好不尽相同,但是起一个好的名字是十分必要的……
与其含义有关联性(比如
tot
、tmp
、sum
这样的)
尤其是当一个程序要有不止你一个人参与编辑时,起名这方面上最好不要整活,不想用全拼/单词,那就算用首字母缩写也总比abcde强亿倍啦~
3、值
变量要有值,嗯。
不设定值的话默认就是 0 咯
就像如果成为v出道的话,不设定具体的值,就会默认是( )
4、静态
【众所周知,变量有3个基本要素,所以要分4个内容】
static
修饰在变量的前面,这样在每一个同类下的方法中都可以修改/引用该变量
(再多的我也不知道了)
【局域网→内网穿透】
二、定义变量
我说你是啥,你就是啥!
(这个看起来没啥好说的但是又有点能说的东西?)
这里只打算纯粹吐槽一下对数组或者类的定义时……
Scanner sc=new Scanner(System.in);
第一次见到new
的时候我是很震惊的啦!调用类一定要new一下才行诶!
你要想定义一个数组,直接过,没问题 int[] a;
但要是想同时定义数组大小,对不起,请加上new来确定你要给a开空间……
int[] a=new int[5];
要么你得 int[] a=new int[]{1,2,3,4,5,6,7,8,9,10};
这样也是开了空间
但是空间就只有这么大了……你要想增大空间,请new
一下(然后数据全部消失)
三、赋值&类型转换
性(质)转(变)!
没太多可以说的,赋值就赋它应该是的东西咯
但是整型可以赋int a='0';
这样的东西,就好比char p=32;
因为这俩本来就是等价的……(ASCII码对应)
不过也不完全一样啦~
int a='0';
char p=10;
a=p;//这句可以执行
p=a;//这句将会报错
char变成int毫无压力
int变成char非得用p=(char)a
才能赋过去,那确实没啥办法,就得这样。
【除此之外常见的类型转换还包括小数/整型转换】
比如double a=1.732;
然后int b=(int)a;
这样b就只剩1了(没有四舍五入)
还有int a=5,b=3;
然后double c=(double)a/b
不加类型转换的话得不到小数的。
四、运算符
繁而不乱,杂而有序。
运算符有不少,都很常用,并且有优先级
呃我不会提倡去背优先级,我更建议养成好习惯多打几个括号
不过为了严谨(凑字数)我还是列一下大致的优先级吧!(优先什么?)
SSS+:括号 //绝对的最强,毫无争议,解除一切纷争の神
SSS:非/自增/自减/取反 //只涉及自己,不涉及他人的一些运算符
SS:乘/除/取模 //取模比加减强!取模比加减强!取模比加减强!
S:加/减 //嗯哼哼……
S-:移位
A:不等号 //包括大于小于大等小等
B:等于/不等于 //没有不等号强
B-:与运算
B--:异或运算
B---:或运算
C:与
D:或 //与比或强!
E:三元运算 //有时候写起来方便
F:赋值运算符们 //比如=
+=
.......
总体的关系大约就是算术运算符>关系运算符>逻辑运算符>位运算符>赋值运算符
五、判断
To Do,or not to do.
1.if
if ( "一个布尔值" ) { ...... }
(没什么可说的)
呃其实还是有地方吐槽的:【必须用布尔值,没办法用整型混过去了!】
好的,言归正传……
if(){}
可以跟else{}
连用
形成(知名的)连续判断……:
if(){
}
else if(){
}
else if(){
}
...
else{
}
2.(Nintendo) switch
如果实在是会导致非常的冗长,用switch(){}
替代是不错的选择
switch(某个整型,比如a){
case "一个数字":“语句A”;“语句B”;....;break;
case "一个数字":“语句C”;“语句D”;....;break;
case "一个数字":“语句E”;“语句F”;....;break;
...
default:“语句M”;“语句N”;
}
检索a
与case
当中哪个条目的数字相同,若相同则执行之;
【如果不加break;
则将会继续执行其下一行的语句内容(这时候就会忽略case
要求的数字了)直至遇见break或者所有语句运行完毕】
如果没有与任何条目的数字相同,则执行default
后的语句
【当然,default
不是必要的,可以没有default
】
六、循环&对循环的操作
“你永远也无法达到……不好意思走错了。”
1.while循环
while(一个布尔值){.....}
刚进入while时或所有语句执行结束后,布尔值为true
就依旧执行,为false
就离开。
2.do-while循环
【我为什么要用这玩意儿?】
do{.....}while(一个布尔值);
先执行内容一遍,然后再检索while
(这货我就不多讲了吧,很少用到)
3.for循环
【理论上可以和while互相取代,但没必要】
for(单次表达式;条件表达式;末尾循环体){.....}
进入for后:
①执行单次表达式
②判断条件表达式,若true则执行{.....}内语句,否则离开
③执行{.....}完毕后,执行末尾循环体
④然后重复②和③
【三个表达式都不是必要存在的!】
最常见的for循环形式恐怕就是
for(int i=0;i<n;i++){
.....
}
这可以让里面的语句被执行n次
但这只是最基本的用法罢了……我的意思是,你完全可以发挥想象,让for变得十分有用……
【好吧,再怎么有用,也是可以和while互相转写的!】
4.break
break;
遇到break;
之后,立即跳出当前所处的循环(不是当前的大括号哦)
5.continue
continue;
遇到continue;
后,立刻进入下一次循环(仍然会执行for循环的末尾循环体)
6.loop
【对不起!我不会!!】
总之是在多层循环结构中,可以跳到指定的一层循环去的一种指令。
(由于没有用过,所以不会,这一定很合理吧!)
七、注释
//备注:我是一条注释,我只负责卖萌,剩下的交给你们。
//我只讲三句话:
/* 多写注释!!
多写有用的注释!!!
尤其是有多人协作/复杂题目时 注释是十分甚至九分有用的!!!! */
// 好的,不说了。
八、写在结尾
《关于我在第一次培训已经结束后才补交第零次培训作业这件事,我表示十分的抱歉并希望(只是希望……)下次自己不要拖更这件事,我劝学长大人网开一面体谅吾等萌新小生在下万分感谢)))))))》