Java基础知识点1
运算符
运算符的分类:
算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 三目运算符
自增自减运算符:++i:i先自加,再做其他运算;i++先运算再自加;
--i先自减再做其他运算;i--先运算再自减;
赋值运算符
= : 这个等于号在Java中表示赋值的意思,真正数学意义上的相等是 == 在JavaScript当中还有 ===,表示类型和数值都相等
扩展赋值运算符:
+= -= *= /= %= (使用扩展赋值运算符系统会自动帮我们强制类型转换)
*关系运算符的结果是boolean类型
逻辑运算符 作用: 连接多个boolean类型的表达式
boolean类型的表达式1 逻辑运算符 boolean类型的表达式2逻辑运算符 boolean类型的表达式3 逻辑运算符 boolean类型的表达式n
与(&): 有一个为false结果为false;如果都为true结果才为true
或(|): 有一个为true结果为true;如果两个都为false结果才为false
异或(^) : 相同为false,不同为true (相同为0,不同为1)
非(! ): 取反
当!的个数是奇数个的时候,结果相反
当!的个数是偶数个的时候,结果不变
面试题: & 和 && 的区别
1、& 表示按位与,无论什么情况都会同时计算运算符两边的表达式
2、&& 表示短路与, 如果前面的表达式为false,那么无论后面结果如何,都不会去计算后面表达式的值
3、&&开发中使用,&基本不用
4、&常用于位运算,位运算的效率比普通运算要高很多
条件运算符(三目运算符(?:)):
格式: X ? Y : Z(X表达式必须是boolean类型的表达式)
X为ture,则输出Y,为false,输出Z
表达式: 符合一定语法规则的运算符和操作数的式子。
使用Scanner对象一些小技巧:
1.使用键盘输入获取数据之前建议加入提示性语句
2.next系列的方法是阻塞方法,会等待用户的输入,用户输入结束,程序继续执行
注意事项:异常名称: 输入不匹配异常
产生原因: 输入的类型和接收的类型不匹配
解决办法: 类型匹配即可
位运算符: 用来计算二进制的运算符
例如System.out.println(3 & 4); // 0
00000000 00000000 00000000 000000113
&00000000 00000000 00000000 000001004
-----------------------------------------
00000000 00000000 00000000 000000000
原码、反码、补码的运用
在计算机中,负数可以用原码、反码、补码表示
但计算机只有表达一种方式:补码
计算机中只要是运算都是用补码来操作
原码:最高位是符号位,0表示正数,1表示负数
反码:正数的反码和原码相同,负数的反码是除了符号位不变,各位按位取反
补码:正数的补码和原码相同,负数补码是在反码末位加1
例如:10001001
1 0001001 原码
1 1110110 反码
1 1110111 补码
移位运算符
<< >> >>>
<< 左移 : 左边最高位丢弃,右边补0
>> 右移 :
最高位是0,左边补0
最高位是1,左边补1
>>> 无符号右移: 无论最高位是0还是1,左边补0
System.out.println(-24 >> 2);
计算出24的二进制 11000
原码 : 10000000 00000000 00000000 00011000
反码 : 11111111 11111111 11111111 11100111
补码 : 11111111 11111111 11111111 11101000
1111111111 11111111 11111111 111010 补码
1111111111 11111111 11111111 111001 反码
1000000000 00000000 00000000 000110 原码
结果 -6
System.out.println(-24 >>> 2);
计算出24的二进制
原码 : 10000000 00000000 00000000 00011000
反码 : 11111111 11111111 11111111 11100111
补码 : 11111111 11111111 11111111 11101000
补码: 0011111111 11111111 11111111 111010
反码: 0011111111 11111111 11111111 111001
原码: 0100000000 00000000 00000000 000110
*面试题:
2 << 4
2.使用最有效率的方式交换两个数的位置(两个数对调)
方式一:
int temp ;
int a = 10;
int b = 20;
temp = a;
a = b;
b = temp;
方式二
利用异或的特点: 一个数值对另外一个数值进行异或两次,那么数值本身不做任何改变
,不同为1)
分支语句
If语句
格式: if(条件表达式){
语句体;
}
执行流程: 如果条件表达式为true,执行if语句体,否则不做任何操作
注意事项:
* 1.当语句体中只有一条语句的时候,大括号可以省略,但是建议不省略,但是如果有多条语句必须使用大括号包裹
* 2.注意if(score >= 90) ; {} 这种会永远执行
* 3.单if语句可以使用三目运算符改进,建议使用三目
* 4.条件表达式必须是boolean类型的值
if-else语句
格式:执行流程:如果条件表达式的结果为
if(条件表达式){true执行语句体1;
语句体1;
} else {false执行语句体2;
语句体2;
}
注意:
1.比较基本类型是否相等使用 ==,比较引用类型是否相等暂时使用equals
2.能用三目运算符尽量使用三目运算符
能够使用三目改进的就一定能够使用if语句,但是能用if语句实现的不一定可以使用三目运算符
多重if语句
格式:
if(条件表达式1){
语句体1;
} else if(条件表达式2){
语句体2;
} else if(条件表达式3){
语句体3;
} ...else if(条件表达式n){
语句体n;
} else {
语句体n+1;
}
注意事项:
1.这种语句一般作用于区间判断
2.else if可以有多个,else最多只有一个
嵌套if语句
格式:
if(条件表达式1){
语句体1;
if(条件表达式1){
语句体2; 嵌套if--else
} else {
语句体3;
if(条件表达式1)嵌套if
{语句体3;}
}
} else {
if(条件表达式1){嵌套多重if--else
语句体1;
} else if(条件表达式2){
语句体2;
} else if(条件表达式3){
语句体3;
} ...else if(条件表达式n){
语句体n;
} else {
语句体n+1;
}
}
注意!嵌套if语句一般可读性差!
swicth语句格式
switch (表达式) {
case 值1 :
语句序列;
break;
case 值2:
语句序列;
break ;
default:
break ;
}
switch语句的特点:
1.表达式的类型可以是以下几种数据类型(byte short int char)
注意: 表达式的类型本质还是整数类型 (byte short int char) 他们之间换算还是会转化成int类型来计算
2.case子句的取值必须是常量表达式,case子句可以有多个,case子句的值不能重复
3.default子句类似于if语句中的else,default子句可以出现在switch语句中的任何位置,建议放在最后面
4.break子句表示退出switch语句体,如果case或者default子句中没有break子句,会出现break穿透现象,如果都没有break子句,程序会从上至下依次执行
---------------------------------------------------------------------------------------------------------
if语句和Switch语句的选择
if选择结构
基本if选择结构: 处理单一或组合条件的情况
if-else选择结构:处理简单的条件分支情况,建议使用三目运算符改进
多重if选择结构:处理复杂的条件分支情况
嵌套if选择结构:用于较为复杂的流程控制
switch选择结构
多重分支并且条件判断是等值判断的情况
if语句和switch语句的区别
if语句
表达式的结果是boolean类型
常用于区间判断
switch语句
表达式类型不能是boolean类型,可以是byte short int char String 枚举
常用于等值判断
选择语句的选取:
能用switch语句实现的就一定可以使用if实现,但是反之不一定
如果是区间范围采用if,如果是等值判断使用switch
循环语句
for循环
while循环
do-while循环 特点是:先执行一次循环体,再判断条件
循环语句总结
for,while循环是先判断再执行;do-while循环是先执行,再判断,并且一定会执行一次循环体。
在循环结束后,还希望能使用作为循环条件判断使用的变量,使用While循环,否则使用for循环。for循环的变量 i 只作用于循环体。
如果循环条件是一个区间范围的,使用for循环。如果循环次数不明确,使用while循环。
for while do-while循环三者的区别和选取
1.for 和 while do-while比较
a.for循环针对循环次数确定的情况,while和do-while针对循环次数不确定的情况
b.for循环里面的循环变量只在循环体内有效,while循环放在循环体外,作用于全局
2.while 和 do - while的比较
while循环是先判断条件是否成立,再执行循环体
do-while实现执行一次循环体,再来判断条件是否成立
break语句
break作用: 终止某个语句块的执行,退出循环体或者switch语句体
注意:break + 标签名的写法不建议书写,因为会大大降低程序的刻度性,慎用
continue语句
continue只能够作用在循环体内
continue的作用
1.表示退出本次循环,执行下一次循环
2.退出本次循环,直接执行控制条件语句(for循环)
3.一旦碰到continue关键字,无论continue下面有多少行代码都不会被执行
循环
单层循环
表示退出本次循环,执行下一次循环
多层循环
continue + 标签名: 直接执行标签名所对应的循环的控制条件语句(for)
例如:outLoop:for (int i = 0; i < 3; i++) {
innerLoop:for (int j = 0; j < 7; j++) {
if (j == 3) {
continue outLoop;
}
System.out.print("*");
}
=============================================================================================================================================================================================================================================
*方法:
为什么需要学习方法?
1.简化了代码
2.提高了代码的扩展性和可维护性
3.我们从一个方法的实现者转而成为了一个方法的调用者指挥者,这也是面向对象思想的心基础
方法概念: 完成特定功能的代码片段
Java基础知识点1的更多相关文章
- Java基础知识点(四)
前言:记录Java基础知识点,方便熟悉与掌握. 1.面向对象的"六原则一法则" “六原则一法则”:单一职责原则.开闭原则.依赖倒转原则.里氏替换原则.接口隔离原则.合成聚合复用原则 ...
- Java基础知识点(三)
前言:准备将Java基础知识点总结成一个系列,用于平常复习并加深理解.每篇尽量做到短小精悍,便于阅读. 1.Math类中相关函数 Math.floor(x):返回不大于x的最大整数.eg:Math.f ...
- Java基础知识点(二)
前言:Java的基础知识点不能间断. 1.Array和ArrayList的区别 关于Array的用法,参看:http://blog.csdn.net/b_11111/article/details/5 ...
- Java基础知识点(一)
前言:本篇随笔,主要记录Java的基础知识点,不管是用于项目或者面试中,笔者认为都非常有用,所以将持续更新...... 1.Java的访问权限 Java中有四种访问权限:默认访问权限.public.p ...
- Java基础知识点总结
前言 本文主要是我之前复习Java基础原理过程中写的Java基础知识点总结.Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其 ...
- JAVA基础知识点总结(全集)
1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境 ...
- java基础知识点补充---二维数组
#java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...
- Java基础知识点
以下10点为JAVA 基础知识,后面将足以总结和完善以备面试 数据类型 (包装类,字符串,数组) 异常处理 Java IO和NIO 数据结构 (集合和容器 ) 多线程(并发) 网络通信(协议) 面向对 ...
- 如何学习java?Java基础知识点分享
面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...
- Java 基础知识点
很多 Java 基础的东西都忘记了, 有必要再复习一些基本的知识点. 本文主要参考 https://github.com/Snailclimb/JavaGuide ================== ...
随机推荐
- Pthreads n 体问题
▶ <并行程序设计导论>第六章中讨论了 n 体问题,分别使用了 MPI,Pthreads,OpenMP 来进行实现,这里是 Pthreads 的代码,分为基本算法和简化算法(引力计算量为基 ...
- 表单的编辑添加和删除 .removeClass() .append() .preAll() .attr('b') document.createElement()
1.$(..).removeClass() 去除属性 2$(..).append 把内容加在后面 3.$(..).preAll() 前面所有的兄弟属性 4.$(..).attr('b') 属性 ...
- col标签的相关实验
col上有width属性,如果对应值没有单位,默认是像素 <!DOCTYPE html> <html> <head> <title>col相关实验< ...
- 将bmp文件转换为jpg文件
procedure TForm1.Button1Click(Sender: TObject);(*压缩MBP为JPEG;但是没有提供压缩比可选项凑合用吧,大概1/3 ^_^:Note:必须加上JPEG ...
- php导出数组到csv格式demo
php的二维数组导出到csv需要处理文字编码,代码如下 <?php $data=array( array("username"=>"test1",& ...
- eclipse中使用maven的 maven install
windows -> preferences -> Java -> Installed JREs 在default VM arguments 中添加 -Dmaven.multiMod ...
- 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: GetLzdtArticleResult。InnerException 消息是“反序列化对象 属于类型 lzdt.DTO.Dtolzdt[] 时出现错误。读取 XML 数据时,超出最大
当遇到这个错误的时候郁闷了好长时间报错是字符串长度过大可是修改了MaxStringContentLength”属性的值却不起作用最后才发现还是因为配置文件配置的问题在服务端 格式化程序尝试对消息反序列 ...
- C语言压缩/解压缩
一.简介 Lzlib 压缩库提供了在内存中的 LZMA 压缩和解压算法功能,包括对数据进行完整性检查.压缩格式是 lzip 参考: http://blog.csdn.net/damenhanter/a ...
- Luogu 4491 [HAOI2018]染色
BZOJ 5306 考虑计算恰好出现$s$次的颜色有$k$种的方案数. 首先可以设$lim = min(m, \left \lfloor \frac{n}{s} \right \rfloor)$,我们 ...
- oracle 分页其实一个子查询就好了,没理解的自然只能见样学样
.首先rownum是一个查询缓存级别的东西,所以以下写法是错误的 ; 因为rn其实不是student表的内容,看做一个缓存编号就好 但是有些人不服了,加个a.rn<= ;结果还是不行,这下相信了 ...