2019独角兽企业重金招聘Python工程师标准>>>

DAY-2

1.标识符

1.1 Java语言基础组成

1.1.1关键字

被计算机语言赋予了特殊的含义的字符

1.1.2标识符

l 在程序中自定义的一些名称

l 由26个字母大小写,数字:0-9符号:_和$z组成(下划线和美元号)

l 定义合法标识符规则:

1.数字不可以开头。例如:123bobo

2.不可以使用关键字。例如 static public

l Java中严格区分大小写

l 注意: 在起名字的时候,为了提高阅读性,要尽量有意义

例如:class Add()

Java中的名称规范:

l 包名:多单词组成时所有字母小写。

xxxyyyzzz

l 类名接口名:多单词组成时,所有单词的首字母大写。

XxxYxxZzz

l 变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。

xxxYyyZzz

l 常量名:所有字母都大写,多单词组成时每个单词用下划线连接。

XXX_YYY_ZZZ

1.1.3注释

l //单行注释

l /*

多行注释

*/

2.常量

2.1常量与变量

l 常量表示不能改变的数值。

l Java中常量的分类:

1.整数常量,所有整数

2.小数常量,所有小数

3.布尔型常量,较为特有,只有两个数值,true flase.

4.字符常量。将一个数字字母或者符号用单引号(‘’)标识。‘4’

5.字符串常量。将一个或者多个字符用双引号标识。“adc”

6.null常量。只有一个数值就是:null.

l 对于整数:Java有三种表现形式。

十进制:0-9 满10进1

八进制:0-7 满8进1 用0头表示。

十六进制:0-9,A-F满16进1。用0x开头表示。

3.进制的特点

编码表ASCII

010...001--A

011...001--B

科学型计算机可以计算二进制

规律:进制越大,表现形式越短

class VarDemo
{
public static void main(String[] args)
{
System.out.println(60);
System.out.println(0x3c);
}
}

4.进制转换(十进制和二进制)

十进制→二进制 6的二进制

原理:对十进制数进行除2预算。

二进制→十进制

原理:二进制乘以2的过程。

110
0*2(0)+1*2(1)+1*2(2)=    数值*2(0)+数值*2(1)+数值*2(2)0 +  2    + 4   =6
0   0   1   1   0   1   0   1 =
128 64  32  16  8   4   2   1 = 535+4=9101
+100
1001=9

5.进制转换(八进制和十六进制)

其它进制转换。

先转换二进制

转成16进制 四个二进制位就是一个十六进制位

90
0101-10105    10 A
90=0x5A

转成8进制

三个二进制代表1位

001-011-010
1    3   2

6.进制转换(负数二进制)

负数的二进制表现形式

6==110

-6:其实就是6的二进制的取反+1。

取反:将二进制的1变成0 0变成1

0000-0000 0000-0000 0000-0000 0000-01101111-1111  1111-1111 1111-1111 1111-1001
+0000-0000 0000-0000 0000-0000 0000-0001
------------------------------------------0000-0000 0000-0000 0000-0000 0000-1010 =-6

负数的最高位都是1。

测试

class VarDemo
{
public static void main(String[] args)
{
System.out.println(Integer.toBinaryString(-6));
System.out.println(0x3c);
}
}

7.变量

变量:就是将不确定的数据进行存储。

也就是需要在内存中开辟一个空间

就是通过明确数据类型,变量名称数据来完成

class VarDemo
{
public static void main(String[] args)
{
//定义变量的格式:
//数据类型 变量名 = 初始化值;
//定义一个int类型的变量,取值为4;
int x =4;
System.out.println(x);
x = 10;
System.out.println(x);
//演示其它数据类型。
byte b = 2; //-128-127;
//byte b1 = 128;
short s = 30000;//别超过域 因为有可能报错损失精度
long l = 41;
float f = 2.4f;
double d = 34.56;
char ch = '4';
char ch1 = 'a';
char ch2 = '+';
char ch3 = ' ';
boolean bo = true;
boolean bo1 = false;
/*
什么时候定义变量?
当数据不确定的时候。需要对数据进行存储时。就定义一个变量来完成存储动作。
*/
int a = 5;
a = a + 6;
}
}

8.类型转换

byte b  = 3;
b = b + 2;
System.out.println(b);97 a
98 b
System.out.println(‘a’+1);
98

9.算术运算符

9.1运算符

10.转义字符

//字符串数据和任何数据使用+都是相连接,最终都会变成字符串
//System.out.println("ab"+5+5);
/*
转义字符:通过\来转变后面的字母或者符号的含义。
\n:换行
\b:退格。相当于backpace
\r:按下回车键。
\t:制表符。相当于tab键
*/
System.out.println("hello\nworld");//换行
System.out.println("hello\bworld");// 退格
System.out.println("hello\rworld");//按下回车键。
System.out.println("hello\tworld");//制表符。相当于tab键。

11.赋值和比较运算符

11.1 赋值运算符

l 符号:

=,+=,-=,*=,/=,%=

l 示例:

int a,b,c; a=b=c=3;
int a = 3; a+=5;等同运算a=a+5;

l 思考:

short s =3;

s=s+2;编译失败,因为s会被提升会int类型,运算后的结果还是int类型,无法赋值给short类型。

s+=2; 编译通过,因为+=运算符在给s赋值时,自动完成了强转操作

有什么区别?

11.2比较运算符

运算符

运算

范例

结果

==

相等于

4==3

false

!=

不等于

4!=3

true

<

小于

4<3

false

>

大于

4>3

true

<=

小于等于

4<=3

false

=>

大于等于

4>=3

true

instanceof

检查是否类的对象

“hello” instanceof

true

注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。

注2:比较运算符”==”不能误写成”=”。

11.3逻辑运算符

运算符

运算

范例

结果

&

AND(与)

false&true

false

|

OR(或)

false|true

true

^

XOR(异或)

true^false

true

!

Not(非)

!true

false

&&

AND(短路)

false&&true

false

||

OR(短路)

false||true

true

//逻辑运算符用于连接boolean类型的表达式。
//x > 3 & x <6 = true & true =true;//并且
/*true  & true =true ;true  & false = false ;false & true = false ;false & false = false ;
&:只要两边的boolean表达式结果,有一个为false,那么结果为false,只有两边都为true 结果为true;
*/
/*true | true = true;
false | true =true;
true | false = true ;
false | false = false;
|: 两边只要有一个为true,结果为true。只有两边都有false,结果为false。
*/
/*^:异或:就是和|有点不一样。当true^ true =false;
true ^ true =false;
true ^ false =true ;
false ^ true = true ;
false ^ false = false;
^:两边都相同结果是false;两边不同结果为true;
*/
/*
!true
!!true
*/
int a = 4;
a>3 && a<6;
/*
&和&&的特点
&:无论左边是true是false。右边都运算。
&&:当左边为false时,右边不运算。
|:两边都参与运算。
||:当左边为true。右边不运算。
*/

11.4位运算符

运算符

运算

范例

<<

左移

3<<2 =12 → 3*22=12

>>

右移

3>>1 =1 → 3/21=1

>>>

无符号右移

3>>>1=1 → 3/2=1

&

与运算

|

或运算

^

亦或运算

~

反码

3<<2=12; 3<<1=6; 3<<3=24

3*4(2的2次方:1 2 4)=12 3*2(2的一次方:1 2)=6 3*8(2的3次方:1 2 4 8)=24

0000-0000 0000-0000 0000-0000 0000-0011=3

向左位移两位

00-0000 0000-0000 0000-0000 0000-001100=12

6>>2 =1; 6>>1 =3;

6/22=1取整 6/21=3;

0000-0000 0000-0000 0000-0000 0000-0110=6

向右位移两位

00-0000-0000 0000-0000 0000-0000 0000-01=1

3<<2 → 3*22

3<<3 → 3*23

<<:其实就是乘以2的移动的位数次幂。

>>:就是除以2的移动的位数次幂 取整

>>

|111111-1111 1111-1111 1111-1111  1111-10|10=-6

<<<

001111-1111 1111-1111 1111-1111  1111-10|10

>>:最高位补什么由原有的最高位值而定。

如果最高为-有一后,用0补空位。

如果最高位1,右移后,用1补空位。

>>>无论最高位是什么,右移后,都用0补空位

&:

6&3=

0就视为假 1就视为真

110

&011

010=2;

|:

6|5=7;

110

|101

111=7;

^:

6^5=

110

&101

011=3

????问题:~6 为什么结果是-7?

第一步:6换二进制 000...000110 6

第二步:取反

111...111001

然后计算 等于2?不是7?

111...111010

7^4

111

^100

011=3

^100

111=7; 7^4^4=7; 7^5^5=7;

一个数异或同一个数两次,结果还是那个数

练习:1。最有效的方式计算2*8

1000

*0010

0000

1000

10000=16

000..00010 000

这个高效

2<<3

2.对两个整数变量的值进行互换(不需要第三方变量)

//通过第三方变量,
// int temp;
// temp =n;
// n=m;
// m=temp;
//不用第三方变量
System.out.println("n="+n+",m="+m);
// 11 = 3 + 8;
// 3 = 11 - 8;
// 8 = 11 - 3;
// n = n + m;// 定义:n=3 m=8 然后n=11 m = 8如果n和m的值非常大,容易超出int 范围。
// m = n - m;// 定义:n = 11 m =8 然后m = 3 n=11
// n = n - m;// 定义:m = 3 n = 11 然后n = 8 m 3
n = n ^ m;
m = n ^ m;//(n^m)^m
n = n ^ m;//(n^m)^n;
System.out.println("n="+n+",m="+m);

12.语句(if)

12.1流程控制结构

12.1.1判断结构

if语句

三种格式:

1.

if(条件表达式)
{
执行语句;
}

2.

if(条件表达式)
{
执行语句;
}else
{
执行语句;
}

3.

if(条件表达式){执行语句;}else if (条件表达式){
执行语句;}.....else{执行语句;}
12.1.2选择结构

switch语句

格式:

switch(表达式)
{
case 取值1:执行语句;break;
case 取值2:执行语句;break;
....
default:执行语句;break;
}

Switch语句特点:

a.switch 语句选择的类型只有四种:byte short int char.

b.case之间default没有顺序.先执行第一个case,没有匹配的case再执行default

c.结束switch语句的两种情况:遇到break,执行到switch语句结束.

d.如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束

添加好友

小额赞助

微信 支付宝

转载于:https://my.oschina.net/snowbobo/blog/414936

黑马程序员.bobo.DAY.2相关推荐

  1. 黑马程序员.bobo.DAY.6

    2019独角兽企业重金招聘Python工程师标准>>> Day-6 1.面向对象(static 关键字) /* 静态:static 用法:是一个修饰符,用于修饰成员(成员变量,成员函 ...

  2. 黑马程序员_MongoDB笔记

    根据黑马程序员的课程资料整理所得,仅用于学习使用,如有侵权,请联系删除 1.MongoDB简单介绍 1.1 MongoDB应用场景 应对三高需求 High performance - 对数据库高并发读 ...

  3. 黑马程序员 oc对象的方法成员变量

    -----------黑马程序员 IOS培训.Android培训.Java培训.期待与您交流---------------- #import <Foundation/Foundation.h&g ...

  4. python那么慢为什么还有人用-Python执行效率慢,为什么还这么火?【黑马程序员】...

    稍微了解python的同学,都知道python比起java这类编译型语言来说执行效率比较低,可是为什么python依然这么火呢? Python是一门解释型的动态语言,由于语言的解释执行的过程和动态类型 ...

  5. python实训项目-黑马程序员上海校区Python21期Django项目实训

    黑马程序员上海中心 月薪一万只是起点 关注 晚上十点,一名名Python学生正在酣畅淋漓地撸代码,手指不间断地敲击着键盘,发出机械而清脆的声音. 各个小组在经过为期4天的django项目小组开发,终于 ...

  6. 黑马程序员:从零基础到精通的前端学习路线

    黑马程序员:从零基础到精通的前端学习路线 随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才.很多同学,包括以前做UI的.Java的.或者对于IT完全零基础的同学都想学习前端.下图是网上 ...

  7. 黑马程序员——c语言学习心得——函数传递二维数组

    黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.    变量 ...

  8. 黑马程序员Linux系统开发视频之创建守护进程模型

    黑马程序员Linux系统开发视频之创建守护进程模型 1.创建子进程,父进程退出   所有工作在子进程中进行形式上脱离了控制终端 2.在子进程中创建新会话   setsid()函数   使子进程完全独立 ...

  9. 黑马 程序员——Java基础---流程控制

    黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...

最新文章

  1. Android RecyclerView详解
  2. 偶然在网上看到的题目,jQuery功底如何一测便知晓!!!!!!
  3. JavaScript学习总结(四)——逻辑OR运算符详解
  4. 【转】ABP源码分析四十七:ABP中的异常处理
  5. Mendix:云原生应用是软件的未来
  6. bzoj1225 [HNOI2001] 求正整数 约数个数定理+对数
  7. 2018-2019-2 20165222《网络对抗技术》Exp9 Web安全基础
  8. 淘宝、飞猪、闲鱼都挂了,阿里云却正常?!
  9. papers to read
  10. InputFilter 和 TextWatcher
  11. 人工智能革命:人类将永生或者灭绝
  12. 范式通俗理解:1NF、2NF、3NF和BNCF
  13. openwrt修改默认网关地址_修改宇视摄像机IP地址的方法
  14. 【githubboy】一项视频自动抠图技术,强大、实时、高分辨率的人物视频抠图方法
  15. PDMS二次开发产品Naki.CI(二):升级到1.0.1版本
  16. The 3rd SMUCTF Office WriteUp
  17. 安卓开发实战讲解!斗鱼直播Android开发二面被刷,社招面试心得
  18. 重型音乐金属核后期分轨混音教程教学培训(基础+进阶+重型音色调音指南+剪辑+修音+美感设计+实战+母带处理)|MZD Studios
  19. 点击率预测模型Embedding层的学习和训练
  20. 没有实习经验,没有项目经验,简历怎么写?

热门文章

  1. 打印tensorflow恢复模型中所有变量与操作节点
  2. 计算机强化课程计算机网络,大学计算机网络技术课程教学改革
  3. tensorflow 加载bert_用NodeJS/TensorFlowJS调用BERT实现文本分类
  4. python 豆瓣评论数据分析_Python爬虫实战案例:豆瓣影评大数据分析报告之网页分析...
  5. 最长递增子序列问题合集
  6. 笔记-中项案例题-2017年下-变更管理和配置管理
  7. 网络安全技术 —— 防火墙技术基础
  8. Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型
  9. Winform中设置多条Y轴时新增的Y轴刻度不显示问题解决
  10. SpringBoot+thymeleaf实现文件下载(已实践,全流程)