1 论名字的重要性—标识符

1.1 什么是标识符

标识符其实就是名字,比如变量名、类名、方法名等

1.2 标识符的命名规范

由字母、数字、下划线(_)和美元符号($)组成;

不能以数字开头;

区分大小写;

不能是Java中的保留字和关键字

比如:

age、score 、$title

student_name

getName

1.3 关键字

在Java中有特定含义、专门用途的一些标识符称为关键字(keyword),关键字全部小写

abstract

boolean

break

byte

case

catch

char

class

const

continue

default

do

double

else

extends

final

finally

float

for

goto

if

implements

import

instanceof

int

interface

long

native

new

package

private

protected

public

return

short

static

strictfp

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

assert

enum





保留字:没有定义用途,但保留备用,如goto、const

请判断以下标识符是否合法:

HelloWord、username2、user_name、_userName、
$abc_123、public、
2UserName、user#Name、Hello World

2 我的地盘儿我做主—变量

2.1 什么是变量

首先要明确,变量是用来存储数据的,根据业务需要,存储的数据可能会发生变化。

变量的语法中,包含一些术语:数据类型、变量名、变量的值

codesys全局变量无法添加到符号表中 全局变量标识符_java

变量:保存程序执行过程中的数据

变量名:定义变量的标识符

变量类型:存放的数据类型

变量值:内存单元中装载的数据

变量其实是内存中的一小块区域,可以通过变量名来访问这块区域。

因此,每一个变量使用前必须先声明(定义),然后进行赋值(填充内容),才能使用。

注意:java的变量是区分大小写的,int a和int A 表示两个不同的变量

2.2 变量定义

1) 数据类型 变量名;

变量名 = 对应数据类型的值;

int a;
a = 10;

2)数据类型 变量名 = 对应数据类型的值; (定义变量时直接赋值,推荐写法)

int a = 1024;

注:"=" 表示赋值,变量不赋值,是不能直接使用的,会报错

比如下面代码,定义了变量c,但是没有赋值,打印的时候,直接报错

int c;
System.out.println(c)

codesys全局变量无法添加到符号表中 全局变量标识符_开发语言_02

2.2 变量分类

1)按变量的数据类型划分

基本类型变量:保存的是真实的数字、字符等数据。

引用类型变量:保存的也是数据,只不过这个数据比较特殊,是对象的引用值(相当于对象的内存地址)

2)按被声明的位置划分(了解)

局部变量:方法或语句块内部定义的变量

全局变量:方法外部、类的内部定义的变量

2.3 命名规范

基本原则:见名知义,不要使用中文拼音,更不要使用拼音的首字母组合

【变量名、方法名】:首字母小写,其余单词首字母大写。这种命名方式也称为小驼峰原则

例如:title,void payTime()

【类名】:首字母大写,其余单词首字母大写。这种命名方式也称为大驼峰原则

例如:class UserManager {}

【包名】:全部小写,用英文的"."隔开

例如:com.qfedu

【项目名】:全部小写

例如:studentsys

【常量】:全部大写,单词之间用_隔开

例如:public static final int NO_LOGIN_STATUS = 401;

3 数据类型

codesys全局变量无法添加到符号表中 全局变量标识符_程序猿_03

3.1 基本数据类型

Java中所有的基本数据类型都有固定的存储范围和所占内存空间的大小,而不受具体操作系统的影响,以保证Java程序的可移植性。

数据类型

所占空间/bit位

可表示的数**值范围**

byte(字节型)

8(1个字节)

-128~127

short(短整型)

16(2个字节)

-2^15 ~ 2^15-1

int(整型)

32(4个字节)

-2^31 ~ 2^31-1

long(长整型)

64 (8个字节)

-2^63~ 2^63-1

float(单精度)

32(4个字节)

-3.4E38~3.4E38

double(双精度)

64(8个字节)

-1.7E308~1.7E308

char(字符)

16(2个字节)

0-65535

boolean


true/false

1)整数类型

byte 字节型 /shor 短整型/int 整型/long长整型

注意:

声明long类型需要加‘l’或‘ L’,如:long l = 3L;

byte b = 97;
short s = 200;
int i = 10000;
long l = 64646413132L;

赋值时不能超出该类型的数值范围

byte b = 1000;

codesys全局变量无法添加到符号表中 全局变量标识符_程序猿_04

2)浮点类型

float/double

浮点数就是我们通常说的小数。

Java浮点类型有两种表示形式:

十进制形式,必须含有小数点,例如:

3.14 314.0 0.314

科学记数法形式,如:

3.14e0 3.14E2 3.14E-1

float f = 10.3f;
double d = 12.3;
double d1 = 12.3e0;
double d2 = 12.3e2;
double d3 = 12.3e-2;
double d4 = 12.3E2;

注意:一般我们提到浮点数默认指的是double型,如要声明float型,则需在数字后面加f或F。

3)字符类型

char

Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示(Unicode是全球语言统一编码)

值可以为英文,也可以为中文

char c = 'A';  
char gender= '男';

char类型还可以直接使用数字赋值

char c = 97;  
char gender= 22899;
System.out.println(c); // a
System.out.println(gender); // 女

char类型还可以使用转义字符赋值

程序猿的魔法棒“\”

程序猿:我想点石成金, \石头 -> 黄金

程序猿:我想变超人, \绿帽子 -> 内裤外穿的绿帽子

Java语言中使用转义符号''来将其后的字符转变为其它含义

一些常见的转义字符


名称

描述

\n

换行

将光标移到下一行的第一格。

\t

水平制表

将光标移到下一个水平制表位置。相当于Tab键作用

'

单引号

产生一个单引号。

"

双引号

产生一个双引号。

\

斜杠

产生一个反斜杠。

//    \ 在java中有特殊含义,转义符号,这个需要和其他字符配合到一起来用,有特殊的含义
        
// 转义字符
char c = '\t';
System.out.println(c);

// 输出单引号这个字符    
// 单引号在java里有特殊的语法含义,单引号用来括住字符的
// \' 相当于将原来的语法含义去掉,将其转换为普通的单引号字符
char c1 = '\'';
System.out.println(c1);

System.out.println("super\tman");

System.out.println("super\nman");

codesys全局变量无法添加到符号表中 全局变量标识符_System_05

4)布尔类型

布尔类型的值:true/false (小写)

boolean类型表示真假,一般用于逻辑运算、流程控制

boolean ret = true;
boolean isDel = false;

3.2 类型转换

类似不同大小的杯子之间互相倒水

1)自动类型转换

取值范围小的会自动转为取值范围大的

byte -> short -> int -> long -> float -> double
char -> int -> long -> float -> double
byte不能转为char;
short,char不能互相转换

2)强制类型转换

取值范围大的转为取值范围小的时,需要进行强制类型转换

基本语法:类型A 变量名 = (类型A)类型B的变量;

如:

long l = 100L; 
int i = (int)l;

注意:有可能造成精度降低或数据溢出,使用时要注意

另外,boolean 类型不能转换成任何其它基本数据类型

4 你的数学是体育老师教的吧—运算符

bug国选驸马,引无数程序猿竞折腰。初试题目:

int i = 10;
int j = i++ + i++;

上面代码执行后,i和j的值分别是几?

4.1 表达式

由变量、数字和运算符组成的式子

表达式都是从左至右计算,返回运算结果,如果有括号,先处理括号里面的内容

4.2 算术运算符

运算符

描述

示例

+

5 + 5 = 10

-

5 - 4 = 1

*

5 * 3 = 15

/

10 / 3 = 3 , 10.0 / 3 = 3.3333333

%

取模(求余)

10 % 3 = 1, 10.0 % 3 = 1.0

++

自增(前,后)

++i,i++

--

自减(前,后)

--i,i--

// 算数运算符 + - * / % ++ --
int i = 10;
int i2 = i + 3;
int i3 = (i2 - 5) * i;
System.out.println(i3);

int a = 10;
int b = 3;
// 如果除数和被除数都是整型变量,/ 表示取整(商)  10 / 3 = 3
System.out.println(a / b);

double d = 15.5;
double d2 = 3.0;
// 对于浮点数,/ 数学意义上的除法,得到是小数
System.out.println(d / d2);
System.out.println(d / 3);

// 取余
System.out.println(a % b);
System.out.println(d % 3);
System.out.println("-------------------------------");

// 自增 ++, 每次+1
int m = 10;
m++;
System.out.println(m); // 11
++m;
System.out.println(m); // 12

System.out.println("-------------------------------");

int n = 10;
// ++ 出现在变量后面,后自增
// n++ 这个表达式,先返回n的值(k = 10),然后进行自增的操作
int k = n++;
System.out.println(k); // 10
System.out.println(n); // 11

System.out.println("--------------------------------");

int p = 10;
// ++ 出现在变量前面,前自增
// ++p 这个表达式,先对p进行自增操作(11),然后这个表达式在返回p的值(q = 11)
int q = ++p;
System.out.println(q); // 11
System.out.println(p); // 11

// 自减 --
int r = 10;
r--;
System.out.println(r);
--r;
System.out.println(r);

int r1 = 10;
// int r2 = r1--;
int r2 = --r1;
System.out.println(r2);

自增和自减一般针对整数处理

i++ 与 ++i的区别:

i++ 表示 先返回i的值,再对i进行+1操作

++i 表示 先对i进行+1操作,再返回i的值

4.3 赋值运算符

运算符

描述

示例

=

赋值

a=3; b=2;

+=

加等于

a+=b 相当于 a = a + b

-=

减等于

a-=2;

*=

乘等于


/=

除等于


%=

模等于


int a = 10;
int b = 20;

// a = a + b;
a += b;
System.out.println(a);

// a = a - b
a -= b;
System.out.println(a);

// a = a * 4
a *= 4;
System.out.println(a);

4.4 关系运算符

比较运算符两边的操作数,结果返回boolean类型

运算符

描述

示例

==

相等于

4==3,返回false

!=

不等于

4!=3, 返回true

<

小于


>

大于


<=

小于等于


>=

大于等于


// == 、 != 、 > 、  < 、  >= 、  <=
int age = 30;

// 判断值是否相同
System.out.println(age == 30);
// 不等于 !=
System.out.println(age != 20);

System.out.println(age > 40);

System.out.println(age < 40);

System.out.println(age >= 30);

System.out.println(age <= 10);

4.5 逻辑运算符

程序员绿帽子在小爪帮助下顺利通过初试。复试题目:如果判断指定的年份是否是闰年?

程序员绿帽子毫不犹豫的抱紧了小爪的大腿......最终,绿帽子和bug国公主过上了没羞没臊的生活

温馨提示:能被4整除,但是不能被100整除的年份;或者能被400整除的年份,是闰年

运算符

描述

示例

&&

逻辑与

false && true, 返回false

||

逻辑或

false || true, 返回ture

!

逻辑非

!true, 返回false

&&:表达式的多个条件中,只要有一个为false,整个表达式返回false

||:表达式中的多个条件中,只要有一个为true,整个表达式返回true

// 逻辑运算符  针对多个条件进行综合判断 整个判断结果,也是boolean
// 判断一个人是否是高富帅
// 身高 180cm及以上, 个人资产 1千万及以上 , 颜值9分及以上
int height = 182;
int money = 100000000;
int handsome = 10;

// && 逻辑与   同真为真,有假即假
// 只有所有条件都为true ,返回true
// 只要又一个为false,整个判断结果为false
// 180 >= 180  && 10 >= 10000000 && 9 >= 9
// true && false && true
boolean ret = height >= 180 && money >= 10000000 && handsome >= 9;
System.out.println(ret);

// || 逻辑或   全假就假 有真就真    同假为假,有真既真
// 所有的条件中,只要有一个为true,整个结果就是true
// 所有条件都是false,整个结果false

// 相亲 三个条件里只要满足一个,女方就很满意
boolean ret2 = height >= 180 || money >= 10000000 || handsome >= 9;
System.out.println(ret2);


// ! 逻辑非 真变假 !true=false  假变真  !false = true
// 矮穷挫
boolean ret3 = !(height >= 180 && money >= 10000000 && handsome >= 9);
System.out.println(ret3);

int year = 1996;
boolean ret4 = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
// boolean ret4 = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
System.out.println(ret4);

4.6 三目运算符

? :

基本语法:表达式1 ? 表达式2 : 表达式3

说明:判断表达式1是否成立,如果成立,执行表达式2,否则执行表达式3

int age = 30; int ret = age > 20 ? 1 : 0; System.out.println(ret);

// 表达式2和表达式3的运算结果的类型,决定了接收整个表达的返回值的变量的类型 boolean ret2 = age > 50 ? true : false; System.out.println(ret2);

4.7 位运算符

符号

名称

英文

操作

&

按位与

AND

两个运算数为1,则结果为1

|

按位或

OR

两个运算数有一个为1,则结果为1

^

按位异或

XOR

两个运算数不同时,则结果为1

>>

右移


右移动,左边补0,相当于除以2

<<

左移


左移动,右边补0,相当于乘2

int a = 1; int b = 0; System.out.println(a & b);

System.out.println(a | b); 

System.out.println(a ^ b);

// 左移1位相当于乘以2 // 0000 0001 0000 0010 System.out.println(a << 1); int c = 4;

// 右移1位相当于除以2 // 0000 0100 0000 0010 System.out.println(c >> 1);

附录:

计算机中数据存储单位

位(bit):是计算机存储处理信息的最小单元,每一个bit位的值只能为0或者1

字节(byte):一个字节由8个bit位组成,计算机中是以字节为单位存储数据。不同类型的数据占用的字节数不同

1KB = 1024字节
1MB = 1024KB
1GB = 1024MB

计算机中的二进制

进制就是进位制

二进制表示逢二进一,二进制中只有0、1两个值。

比如,二进制中

1 + 1 = 10
10 + 1 = 11
11 + 1 = 100

计算机中的数据都是以二进制形式保存、运行的。

二进制形式数据的最高位表示符号,最高位如果为0表示正数,最高位为1表示负数

同理:

八进制:

逢八进一,八进制中包含的值为: 0,1,2,3,4,5,6,7。

为了区分,表示八进制数据时,以0开头,如012表示八进制12 ,

十六进制:

逢十六进一,十六进制包含 0-15的值,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f (a表示10,b表示11,以此类推,f表示15)

十六进制值以0x或0X开头,如0x1bf3,

进制转换

二进制与十进制之间的转换

(1)十进制转换为二进制,倒除法

12->1100
35->100011

(2)二进制转换为十进制数

1111- >1 * 2 ^ 3 + 1 * 2 ^ 2 + 1 * 2 ^ 1 + 1 * 2 ^ 0 = 8 + 4 + 2 + 1 = 15
10010-> 1 * 2 ^ 4 + 1 * 2 ^ 1 = 18

(为了方便理解,可对比十进制计算:136 = 1 * 10 ^ 2 + 3 * 10 ^ 1 + 6 * 10 ^ 0 = 100 + 30 + 6)

ascii码表

是英文American Standard Code for Information Interchange的缩写(美国信息交换标准代码)

ASCII码是目前计算机最通用的编码标准