/**
//说明:
以后每天的学习日记全部用编程的规则来写,把学习贯穿到任何地方,如果有写不出来的,就思考并解决问题,同时也帮助自己养成好的编程习惯。
//java语言中的基础组成(8个):
关键字/标识符/注释/常量和变量/运算符/语句/函数/数组
//关键字:
定义:被java语言赋予了特殊含义的单词;特点:所有关键字都必须为小写;
//标识符:
定义:在程序中自定义的一些名称,比如:类名;
由26个英文字母大小写,数字,0-9符号,_$组成;
合法标识符规则:(会出现识别错误)
1,数字不可以开头;2,不可以使用关键字;
main虽然不是关键字,但是是被jvm识别的一个名称,故也不能用来取名。
注意:java语言编程是严格区分大小写的,大小写是不同含义;在取名时,为了提高阅读性,要尽量有意义。
java名称规范
包名:多单词都小写/类名接口名:多单词各首字母大些/变量名和函数名:第一个单词首字母小写后面各词首字母大写/常量名:所有字母均大写,各单词间用下划线_连接。
//常量和变量:java中对一些操作中常见的一些数据也定义了一些类型。
//常量:表示不能改变的数值。
分类:整数常量/小数常量/布尔型常量/字符常量/字符串常量/null常量
字符:字母/数字/符号;用(’ ’)单引号进行标示;里面只能存放单个字符
字符串:将一个或者多个字符用双引号标示;
null常量,只有一个数值:null;//(空常量)??
//整数常量在java中有三种表现形式。
十进制:0-9,满10进1;
八进制:0-7,用0开头表示;
十六进制;0-9,A-F,用0x开头表示;
计数机存储的所有数据都是二进制形式存储的。数据存储的最小单位即八个二进制位组成的字节(Byte),计算机的所有运算也都是用二进制进行运算的。
八进制就是二进制的三位表示为一位(理由:三位二进制最大值为7)/十六进制是二进制的四位表示一位(理由:四位二进制最大值为15)
规律:进制越大,表现形式越短
进制越大表现形式越短,让操作表示数据更简单方便。
十进制转二进制原理就是对十进制进行除以2运算/ 二进制转十进制原理就是二进制乘以2的n次幂的运算,n从0开始/其他进制也同理
非十进制四则运算小技巧:可以先都转换为二进制后再进行运算后再转换。
转为十六进制就直接分割成几个四个二进制位来算,八进制也一样。变成二进制后,再转换为其他进制就非常简单。
负数的二进制表现形式:就是正数的二进制表示形式取反再加1。
规律:负数的最高位是1,整数的最高位是0
//变量:就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间//???
变量的作用范围:只对一对{}之间有效。
变量就如同数学里面的未知数,可以这么来进行理解。
必须具备几要素:空间的类型(??)/名称即变量名/数据类型
java语言对具体数据都进行了不同的定义,是一种强类型的语言,对类型的划分是非常细致的。
开辟空间就是通过明确数据类型,变量名称,数据三要素来完成的。
java对不同的数据类型都进行了标示,它对每一种数据都定义了明确的具体数据类型,在内存分配了不同大小的内存空间进行存储。
//数据类型:基本数据类型/引用数据类型;
//基本数据类型:数值型/字符型(char)/布尔型(逻辑型)(boolean)
//数值型:整数类型(byte,short,int,long)
/浮点类型(float单精度,double双精度)
整数默认:int;小数默认:double;
注意,如果要表示非默认的范围较大的变量时,后面要加上一个后缀,如F/L,虽然大小写都可以,但是最好用大写,好认。
byte取值范围:-2^7~2^7-1;short:2个八位2^15---32768~32767;int:4个八位2^31;long:8个八位。int最常用,byte最小单位,用的也较多,之所以要分类,主要是因为底层的芯片级运算。内存和缓存的区别,以提高运算速度。较小单位的空间单位可以放在缓存里运算会比在内存里快很多。(买硬盘买cpu时看缓存,就可以看运行速度,缓冲存储区域,缓存越大,运算数据越多,速度也就越快。)
float占4个8位共32位,double占8个8位。精度不一样。
char取值范围0~65535=2^16-1即2个8位16位,2个字节码。一个汉字也是两个字节。
char类型用来表示单个字符,一个char代表一个16个bit无符号的(不分正负)Unicode字符,一个char字符必须包含在单引号内。Unicode的表达形式为\u????。。。。
boolean趋势就两个:ture和flase。
//定义变量的格式:数据类型 变量名= 初始化值;
定义变量一定要注意初始化,否则计算机会提示未初始化变量,无法编译。
同意区间不能定义同名的变量。
当数据不确定的时候,需要对数据进行存储的时候,就定义一个变量来完成存储动作。
//类型转换
//因为强类型语言的特点导致不同类型之间是不能直接做运算的,对于整数类型之间可以做运算,但是有一个操作为前提,即自动类型提升,需把两个类型提升为同一种类型,原则是以大的为主,小的向大的提升。(这个提升的操作是由计算机底层来完成的。)
//自动类型提升/强制转换 (应用,如小数取整)
char变量也是可以进行运算的,因为每一个字符对应的一个二进制位码也是可以表示成十进制的形式的。
//引用数据类型:类(class)/数组(inerface)/数组[]
//运算符:算术/赋值/ 比较/逻辑/位/三元运算符
//转义语句:// \n 表示换行 \b表示退格 \r表示按下回车键 \t表示制表符,相当于tab键。
//赋值运算:=/+=/-=/*=//=/%= 共六种赋值运算。
=表示直接赋值给左边/+=表示这个数进行对应运算后的值再赋给左边。
shorts=4;s=s+5;与s+=5有什么区别?
前面会编译失败,因为后面运算的数据类型是int型,而前面是short型,可能会损失精度;后面的编译成功,因为后面的纯碎是一个完整的赋值运算,会自动类型转换,是直接给s赋值,只要在其取值范围之内即可。
//比较运算符,运算的结果只有两种,要么是真,要么是假。
两个不常见的比较运算符号:==等于 “!=”不等于。
(特别说明,一个=表示赋值,注意细节)
//逻辑运算符:所谓逻辑,就表示有关系。
逻辑运算符用于了解boolean类型数据的表达式。
//逻辑运算符,& 与;|或;^异或;!:非;&&,||:短路;
int x=4;
x>3&x<6=true&true=true;
&:共四种结果,只有一种真;|:只有一种假;
^:与|有点不一样,即true^true=false;
!:就是否定的意思;
&:无论左边是true是false,右边都运算;
&&:当左边为false时,右边不运算;
|:两边都参与运算
||:当左边为true时,右边不参与运算;
//位运算符:这里的位是指二进制的位。因此要先换算成二进制后再进行运算。
包含<<、>>、>>>、&、|、^、~七种。
3<<2=12其实就是3*2^2。注意这个规律。左移移大,右移移小。
往右移也是这个规律。
<<:其实就是乘以2的移动的位数次幂。
>>:就是除以2的移动的位数次幂。
做运算时,最快最有效的运算是位运算。但有局限就是,都是以2的倍数在增长。
>>为带符号右移。最高位用原始最高位数字补空位。
>>>为不带符号右移,空出来的位都拿0来补。
& 、|:0表示false;1表示true;
~:就是取反的意思。负数的表示形式就是整数的二进制取反后再加1。
即a的负数可以这么来表示-a=~a+1
注意细节:7^5^5=7即一个数异或同一个数两次,结果还是那个数。
用途:加密的一个方法。加密算法。不知道加密规律是很难解密的。
练习:
最有效率的方式算出2乘以8等于几?2<<3
对两个整数变量的值进行互换,(不用第三方变量。)
结论:一个数与任何一个数(包括自己)发生两次异或结果为原数,不能是先去异或还是先被异或。
一个数异或自己一次结果为零,异或自己两次结果为自己;
自己联系:
利用位运算符和逻辑运算来计算一个数的十六进制表示形式的获取,
位运算和逻辑运算是很好的功能,可以好好使用。
//三元运算符:?:就是三元运算符号,三个元素参与运算。
格式如下:(条件表示式)?表达式1:表达式2;
如果条件为true,运算后结果是表达式1:反之为表达式2;
//语法结构——程序流程控制 只的就是java中的语句。
顺序结构/判断结构/选择结构/循环结构
//顺序结构
//判断结构
//if语句有三个格式:都是单条语句。只要有一个满足,程序马上就会结束。
//if(条件表达式)
{
执行语句;
}
说明:如果if控制语句只有一句的情况下,那么可以不用大括号,即if在没有大括号的前提下,只控制离其最近的语句。但是严谨的前提下,建议最好加上大括号。
// if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
说明:三元运算符是这种格式的简写形式,但是还是有区别。即运算完必须要有结果,但是这种if语句运算完可以没有结果。当然,三元表达式还可以写在别的表达式语句中。
//
if(条件表达式)
{
执行语句;
}
else if(条件表达式)
{
执行语句;
}
。。。。
else
{
执行语句;
}
练习:需求1:根据用户定义的数值不同,打印对应的星期英文。
需求2:根据用户指定月份,打印该月份所属的季节
345春季,678夏季
提高代码复用性,没必要老写一样的语句。
我们做软件第一步一定要是先对数据进行判断,只有正确的数据才有软件帮他计算,非正确的运算给用户温馨提示,不需要进入软件运算。这才是做软件的基本原则和基本道理。降低我们的软件占内存的使用。
//选择语句
格式有四个关键字,而判断语句只有两个关键字。
switch/case/break/default。
//格式
switch(条件表达式)
{
case取值1:
执行语句;
break;
case取值2:
执行语句;
break;
case取值3:
执行语句;
break;
case取值4:
执行语句;
break;
。。。
default://相当于else语句
执行语句;
break;//这个可以省略,因为到了结尾处,自动结束;
}
说明:switch语句的四个特点:
1:被选择的表达式的值只接受四种类型:byte,short,int,char;
2:case之间与default之间没有顺序,只是在没有匹配的case就执行default,他们的执行顺序是固定的,必须是先执行case,最后执行default,但是他们的位置没有先后。
3:switch结束有两种方式:break和大括号结束。因此这里要注意每一个case后一定要带好break,不然很容易会出现执行错误,因为不结束就会继续执行后面的语句知道大括号结束。或者利用不加break来表示其他的意思。
if除了可以判断具体数值,还可以判断区间,switch只可以判断数值,switch不能判断boolean数据。
如果要对具体数值进行判断数值不多并且符合四种类型的数据用switch完成。switch加载就全部进入软件了,但是if要一条一条来加载,一般switch比if语句会稍微快一些了,效率稍微高些。但if使用的范围会更广。
对于7.0的jdk,可以判断字符串了。
*/
-