day02 Java之语言基础组成
来源:互联网 发布:c语言递归求和 编辑:程序博客网 时间:2024/05/22 16:45
1.关键字
- 规范:必须小写(类名首字母大写)。- 有特别意义的标识符,诸如case,abstarct等等无须强记。
2. 标识符
-程序中自定义的有意义的名称。-规范:26个英文字母大小写,数字0~9,符号 _ $组成; 数字不可以开头;不可以使用关键字。-注意:_ 连接某些名称$子名称(Demo_1$Test); 凡是名称都是标识符。
3.注释
-单行注释://-多行注释:/*......*/-文档注释:/**......*/ -多行,文档区别:文档可以被javadoc.exe提取,生成一个说明书,把这些文档注释和源代码放在一个网页文件中,它记录了说明性文字和程序代码。-注意:多行注释不允许多行注释; 注释不占字节码。 前期敲代码必须要有注释(诸如思路步骤说明等)。-作用:注解说明; 调试程序。
4.常量和变量
-常量:不能改变的数值。 -分类:整数(byte,short,int,Long),小数(float,double),布尔型(boolean),字符(char),字符串(String),null。 -整数表现形式:二进制 0,1 八进制 0~7,用0开头表示 十进制 0~9 十六进制 0~9,A~F,用0x开头表示-进制换算 -计数方式:8 bit(二进制位)=1 byte(最小数据单位)。 -声明:八进制数,二进制中3个二进制位为一个八进制位; 十六进制,二进制中4个二进制位为一个十六进制位。 -例子:二进制-->八进制:1011=1*2^3+1*2^2+1*2^1+1*2^0 010-101-110 = 0256 2 5 6 二进制-->十六进制:-1010-1111 = 0xAF 10 15 十进制-->二进制:除2运算,6/2=3余0, 3/2=1余1,从下往上 1/2=0余1,6的二进制数为110. -负数的进制:最高位是1;该负数的绝对值的二进制取反+1; -举例:-6 6的二进制0000-0110(int类型8位) 取反1111-1001 +1 1111-1010(逢2进1)-变量(未知数x) -定义:存放在某区域中的数据在同一类型范围内不断变化(可以重复使用)。 -注意:变量有效范围{};初始化值。 -格式:数据类型 变量名 = 初始化值。 -基本数据类型:整数(byte,short,int,Long),小数(float,double),布尔型(boolean),字符(char)。 -引用类型:类(class),接口(interface),数组(array) -ps:整数默认,int;小数默认:double。 -大小位:o=8 bit; byte~o;short,char~oo;int,float~oooo;long,double~oooooooo. -类型转换 -自动转换:低位-->高位,无风险。byte,short,char自动转成int类型。 -强制转换:高位-->低位,精度可能损失,有风险。
b = (byte)(b+4);//默认int类型,强转。 System.out.println(b);
-int与byte区别
int x1 = Integer.MAX_VALUE; int x2 = 2; x = x1 + x2; System.out.println(x);//默认int类型,结果超出32位,只保留32位,高位被舍弃,最高位变为1,x=-2^32+1
byte b =3;//默认强转(int-->byte,判断3是否在byte之内满足强转) b = 3 + 4;//b=7 byte b1 = 3; byte b2 = 4; b = b1 + b2;//分析过程/*b1,b2是变量,如果b1=127,b的最高位超出报错。*/
5.运算符
-算术运算符:+,-,*,/,%,++,--,+连接符 -/:取整(6200/1000=6) -%:取余,模运算(5%2=1;若x<y则x%=x;涉及负数只参考被模数,5%-2=1,-5%2=-1) -a++/a--:只要知道这个的原理,另外一个--a/++a正常运算正常赋值就可以了 -举例说明: `int a=1; int b =a++;//a在前面,所以把a的值赋给b,b=1;然后a进行运算即a=a+1=2; -容易混淆的: `int i =1; //int temp = i; i = i++; //i = i+1; System.out.println(i);//i=temp相当于临时变量i=1` /*分析:首先i=1刚开始是放到a区域的,然后把第二行的i=先暂时放到b区域,接着进行运算i++知道i=2这时把a区域的1给盖掉了,此时b区域的i=1来凑热闹把a区域的2给盖掉了,最终i=1*/-赋值运算符:= += —= *= /= %=-面试题
short s = 3;//= 是赋值运算符s += 3;// += 也是赋值运算符,一次运算(+=自动转换过程)/*s = s + 3; 两次运算,不作自动转换,取2^16 -1时报错*/s = (short)(s+3)//可行
-比较运算符:== != > < >= <= instanceof -结果必须是boolean类型,true或false。-逻辑运算符:& | ^ ! && ||(短路) -用于连接两个boolean类型的表达式。 -&: 一个false,结果false;全true,结果true(唯一)。 -|:一个true,结果true;全false,结果false(唯一)。 -^:一个true,结果true;两边相同,结果false。(小区别) **-面试题**: &与|:无论左边运算结果是啥,右边都要参与运算。 &&:左边为false,右边跳过。 ||:左边为true,右边跳过。-位运算符:<< >> >>> & | ^ ~(二进制计算) -& | ^:思想与逻辑运算符相同,举例: 这里是int类型32位,为方便只写相应后三位。 6&3-->110 6|3-->110 6^3-->110 & 011 | 011 ^ 011 ----- ----- ----- 2<--010 7<--111 5<--101 ^ 011 ----- 110-->6 **注意** 一个数^同一个数两次结果还是这个数。 -~(取反):正数原码、反码、补码都一样;负数原码是该数绝对值对应的二进制数且最高位+1;反码是除最高位为1外,其余取反;补码就是反码+1。 **注意** 取反和反码不一样,取反的过程是:原码-->反码-->补码-->取反 (实际运用极少,仅作了解) -<<(左移):3<<x <=> 3*2^x(空位0补,不论正负) 3<<2 00|000000000000000000000000000011 000000000000000000000000000011|00-->12 ->>(右移):6>>y <=> 6/2^y(取整)(空位根据最高位是啥补啥) 6>>1 0000000000000000000000000000011|0 0|0000000000000000000000000000011-->3 ->>>(无符号右移):空位0补,不论正负。 **面试题** 1.最高效的2*8;(2<<3) 2.对两个整数变量进行交换 面试要求
int a = 5; ** int temp; int b = 3; temp = a; a = a ^ b;//a=3^5 a = b; b = a ^ b;//b=(3^5)^3=5 b = temp;** a = a ^ b;//a=(3^5)^5=3 System.out.println("a="+a+",b="+b);
-三元运算符:(条件表达式)?表达式1:表达式2; true---->执行表达式1 false---------->执行表达式2举例:获取三个整数中较大的一个数
int a,b,c,temp,max;temp = a>b?a:b;max = temp>c?temp:c;System.out.println(max);
6.程序流程控制
-顺序结构-判断结构 -if语句 1.if(布尔表达式) {} 2.if(布尔表达式){ }else{} ps:三元运算符为其简写格式(当其运算后有一具体的结果可以用该简写格式) 3.if(布尔表达式 1){ }else if(布尔表达式 2){ }else if(布尔表达式 3){ }else { } **注意** 一条语句可省略大括号,但不建议省略。 if语句一定只执行其中满足条件的一条语句(而不是多条)。 局部代码块:定义局部变量的生命周期(回到变量:作用域,初始值,大括号)-选择结构 -switch语句(byte、short、int 或者 char) (功能性差,书写麻烦,不常用) switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //你可以有任意数量的case语句 default : //可选 //语句 }//先读有效结果,最后才是default **注意** if:对具体的值判断; 对区间判断; 对运算结果是boolean类型的表达式判断; switch:对具体的值判断; 值的个数通常是固定的; 对于几个固定的值判断,建议switch,它会把具体的答案 都加载进内存,效率较高。 -循环结构 -while语句(先判断后执行) while( 布尔表达式 ) { //循环内容 } -do……while语句(先执行后判断,至少执行一次) do { //代码语句 }while(布尔表达式); **累加算法思想**
/*练习:获取1~10的和值(累加算法) 1+0 1+2 2+3 2+3+4 2+3+4+5 ... 思路:每次参与加法数值不确定; 每次出现和值不确定; 和值递增; 加法多次重复运算,且都是和值+下一个数。步骤:定义一个变量1,用于记录参与加法的数值; 定义一个变量2,用于记录和值; 对变量1进行自增 ; 加法运算时重复的。 */ int a = 1;//变量1 int sum = 0;//变量2 for (a = 1; a < 11; a++) { sum = sum + a; } System.out.println(sum);
**计数器思想**
/*需求:1~100中6的倍数出现的次数(计数器思想) 思路:由于从1开始增加,不断循环至100; 1~100中出现某数等于6的倍数时,记录该数,并计数一次。 步骤:定义一个变量,用于自增; 定义一个变量,用于计数; 设置条件能否被6整除(取模),可用if语句 多次循环可用循环结构; */ int a = 0; int count = 0; for (int i = 1; i <= 100; i++) { if (i%6==0) { count++; } } System.out.println(count);
-for语句 for(初始化; 布尔表达式; 更新) { 1 2 4 //代码语句 3 } *无限循环最简单的形式*
while(true){} for(;;){}
*强调内容* 一个条件一次判断-->if语句 一个条件多次判断-->循环结构:循环次数未知-->while和do...while; 循环次数已知-->for *while,do...while和for的说明* 同:可以互换。 异:变量的作用域不同。 -foreach语句(数组) for(声明语句 : 表达式) { //代码句子 } **记一下break和continue** break:break 主要用在循环语句或者 switch 语句中,用来跳出**整个**语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。continue:continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在 for 循环中,continue 语句使程序立即跳转到更新语句。在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
阅读全文
0 0
- day02 Java之语言基础组成
- 黑马程序员——Day02之Java语言基础组成(一)
- day02<Java语言基础+>
- day02 Java语言基础语法
- Day02 --计算机基础知识 java语言基础
- Day5之java语言组成基础
- JAVASE基础-day02(Java语言基础)
- JAVA语言基础 +JAVA学习笔记-DAY02
- Java语言基础组成
- Java语言基础组成
- Java语言基础组成
- JAVA语言基础组成
- Java语言基础组成
- Java语言基础组成
- java语言基础组成
- java语言基础组成
- java语言基础组成
- day02 java语言基础(变量)
- python入门
- 借助WireShark解析PCAP包
- thinking-in-java(14)类型信息
- 开发中遇到的问题
- 矩阵相乘strassen-c++代码实现
- day02 Java之语言基础组成
- 基于vue-video-player自定义播放器
- c++入门笔记(9)语句
- Spark在Windows下的环境搭建
- 机器学习:PM2.5预测MATLAB实现(李宏毅HW1)
- 模拟键盘
- git提交错误 git config --global user.email "you@example.com" git config --global user.name "Your Name
- IDE快捷键
- java的输入输出