codecamp

第3篇-JAVA基础

  • 每篇一句 :目标是给梦想一个期限,行动与坚持就是实现梦想的过程
  • 初学心得 : 遇到困难或问题,它不是休止符,而是引向你如何解决问题的标识
  • (笔者:JEEP/711)[JAVA笔记 | 时间:2017-03-26| JAVA基础 Ⅱ]

上篇回顾

上篇文章中我们学习了JAVA底层的运行机制与深入剖析以及解释其中JAVA基础代码的含义
本篇文章将JAVA基础Ⅱ全面剖析解释,因为JAVA基础非常重要,务必要牢记知识点!!!

1.JAVA基础语法格式

JAVA采用unicode编码
1.JAVA代码都定义在类中,类由class来定义,注意:区分 public class 和 class
2.代码严格区分大小写,:main 和 Main 是不一样的
3.JAVA中的标识符关键字以及注释
4.main方法的作用:程序的入口,保证程序的独立运行,被JVM(JAVA虚拟机)调用
5.一个Java文件中只能有一个公共类,并且该公共类的类名必须和文件名相同。
注释要养成习惯: 在学习中或工作中,只要是写代码就一定要加以注释,这是修炼成为程序员的基本功之二
注释例子

public class HelloWorld {
/* 这是第一个Java程序
*它将打印Hello World
* 这是一个多行注释的示例
*/
public static void main(String []args){
// 这是单行注释的示例
/* 这个也是单行注释的示例 */
System.out.println("Hello World");
}
}

## 2.JAVA语言分隔符
1.分号 ;
语句的分割,表示一句话结束,好比咱们使用的句号

2.花括号 { }
表示一个代码块,是一个整体,花括号要一起使用

3.方括号 [ ]
定义数组和访问数组元素时使用

4.圆括号 ( )
使用很广泛,具体用到细讲

5.圆点 .
类/对象 访问它的成员(字段,方法)时使用等

6.空格

分割一条语句的不同部分,空格的次数不限制

3.JAVA关键字

下面列出了Java保留字,(注):这些保留字不能用于常量、变量、任何标识符的名称
| 关键字 | 描述 |
| :-------- | --------:|
| class | 定义类 |
| public | 表示共有属性或者方法 |
| private | 表示私有字段,或者方法等,只能从类内部访问 |
| protected | 表示字段只能通过类或者其子类访问子类或者在同一个包内的其他类 |
| abstract | 抽象方法,抽象类的修饰符 |
| extends | 表示一个类是另一个类的子类 |
| super | 表示基类 |
| interface | 接口,一种抽象的类型,仅有方法和常量的定义 |
| implements | 表示一个类实现了接口 |
| static | 表示在类级别定义,表示静态的,所有实例共享的|
| this | 表示调用当前实例或者调用另一个构造函数 |
| void | 标记方法不返回任何值 |
| return | 方法返回值 |
| new | 分配新的类实例 |
| import | 导入类 |
| package | 一系列相关类组成一个包 |
| goto | 作为保留关键字,未使用 |
| const | 作为保留关键字,未使用 |
| final | 表示一个值在初始化之后就不能再改变了表示方法不能被重写,或者一个类不能有子类 |
| if | 条件语句 |
| else | if条件不成立时执行的分支 |
| continue | 不执行循环体剩余部分 |
| while | while循环 |
| do | 循环语句,循环体至少会执行一次 |
| for | for循环语句 |
| switch | 选择语句 |
| case | switch语句的一个条件 |
| default | switch语句中的默认分支 |
| try | 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码 |
| catch | 和try搭配扑捉异常信息 |
| finally | 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码 |
| throw | 抛出异常 |
| throws | 定义方法可能抛出的异常 |
| instanceof | 测试一个对象是否是某个类的实例 |
| transient | 修饰不要序列化的字段 |
| volatile | 标记字段可能会被多个线程同时访问,而不做同步 |
| synchronized | 表示同一时间只能由一个线程访问的代码块 |
| assert | 断言条件是否满足 |
| boolean | 布尔数据类型 |
| byte | 8-bit 有符号数据类型 |
| char | 16-bit Unicode字符数据类型 |
| short | 16位数字 |
| int | 32位整型数 |
| float | 32-bit单精度浮点数 |
| double | 64-bit双精度浮点数 |
| long | 64位整型数 |
| strictfp | 浮点数比较使用严格的规则 |
| enum | 枚举类型 |
| assert | 断言条件是否满足 |

4.JAVA中的常量

常量:程序中固定不变化的值,例如:整数1,2,3,小数3.14,false,true等

5.JAVA中的变量

变量的概念:占据着内存中的某一个存储区域
该区域有自己的名称(变量名)和类型(数据类型);
该区域的数据可以在同一类型范围内不断变化;
为什么要定义变量 ?定义变量:用来不断的存放同一类型的常量,并可以重复使用
使用变量注意:变量的作用范围, 初始化值
定义变量的格式:数据类型 变量名 = 初始化值
注:格式是固定的,记住格式,以不变应万变
作用范围:定义开始到定义它的代码块结束
同一范围内,不允许多个个局部变量命名冲突
如何声明数据类型变量
声明类型三种格式 变量名首字母小写,多个单词之间首字母大写
1.声明变量 数据类型 变量名; 如:int a;boolean flag;
2.声明同时给变量赋值 数据类型 变量名 = 值;如:char b = ‘中’;
3.给已经声明过得变量赋值 变量名 = 值;如:falg = true;
变量的起名::有时候很难给变量取一个好的名字,于是有的程序员将变量名命名为类型名
例如: String string; 或缩写,String str ,取变量名最好给有意义的名称,或名称短语。
String username; String password; double pi = 3.14;

6.JAVA成员变量和局部变量

成员变量:在方法体外,类体内声明的变量,又称字段或全局变量;成员变量的作用域是整个类中
成员变量就是在方法外定义的,相当于成员变量是定义在类的里面

局部变量:不是声明在类体括号里面的变量,局部变量使用前必须初始化值,局部变量没有默认初始化值
局部变量就是在方法或方法块内定义的
局部变量的作用域是从定义开始到定义它的代码块结束;
按数据类型划分为:数据类型变量,引用数据类型变量

7.JAVA基本数据类型

| 数据类型 | 大小/位(B) 1字节 = 8位| 数据取值范围|
| :-------- | --------:| | --------:|
| boolean | 1 | true / false |
| byte | 8 | [-128,127] |
| short | 16 | [-215,215-1] |
| char | 16 | [0,216-1] |
| int | 32 | [-231,231-1] |
| float | 32| [-3.4E38(-3.41038),3.4E38(-1.71030] |
| double | 64 | [-1.7E308(-1.710308),1.7E308(-1.710308] |
| long | 64 | [-263,263-1] |
布尔型boolean:boolean类型通常用于逻辑运算和程序流程控制。
boolean 类型数据只允许取值true 或 false(不可以使用0 或非0的整数来代替true和false,区分于C语言)

整数类型(byte、short、int、long),JAVA语言整型常量的四种表示形式:
Int类型的默认值是0;
二进制整数,0b或0B开头,如:int a = 0B110;
十进制整数,如:int a = 17;
八进制整数,要求以0开头,如 int a = 012;
十六进制整数,要求0X或0x开头,如int a = 0x12;

浮点类型(float、double):JAVA浮点类型常量有两种表示方式:
十进制形式: 例如:3.14 ,168.0, .618,科学计数法形式: 例如:3.14e2, 3.14E2, 1000E-2
Java浮点型常量默认是double,则要声明一个常量为float型,则需在常量后加上f 或 F
如:double pi = 3.14;//正确 float pi = 3.14F;//必须加上f,或转型 float pi3 = (float)3.14;
(注):double和float并不能表示一个精确的数字;

字符型char: char型数据用来表示通常意义上得“字符”,char类型默认是为空:
char占2字节,的范围是[0,65535],但是前256个表示特殊字符;字符常量为 用单引号括起来的单个字符
java字符采用Unicode编码,可用十六进制编码形式表示

引用数据类型(String):String不属于基本数据类型,String是一个类,表示字符串
所谓字符串,就是一串字符,也就是多个字符连接在一起,字符串都得使用 "" 括起来的,连接字符串使用 + ;
例如

String str; //声明一个引用数据类型
str = "这是一个引用数据类型"; 或 String str = "这是一个引用数据类型";
String s = "目标" + "产生" + "动力"; //字符串的连接采用 + 符号
System.out.println(s);//输出结果,目标产生动力

8.JAVA运算符

运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种:
算术运算符:++是前缀先对此变量加1自增1,在执行其他操作++a,后缀先执行其他操作,在对此变量加1;b++
| 运算符 /运算 | 例子| 结果|
| :-------- | --------:| | --------:|
| + 正号 | +6 | 6 |
| - 负号| a = 5;-a; | -4|
| + | 5 + 5 | 10 |
| - | 3 - 2 | 1 |
| 乘| 3 2 | 6 |
| / | 5 / 5| [ 1 |
| % 取余 | 5 % 5 | 0 |
| ++ 自增(前) | a = 2;b = ++a; | a = 3;b = 3; |
| ++ 自增(后) | a = 2;b = a++; | a = 3;b = 2; |
| -- 自减(前) | a = 2;b = --a; | a = 1;b = 1; |
| -- 自减(后) | a = 2;b = a--; | a = 1;b = 2 |
| + 字符串相加 | " He"+"llo" | "Hello" |

赋值运算符
*= ,+=,-=,=, /=,%=**

int a = 3; a += 5;等同于运算a = a + 5;

逻辑运算符
逻辑运算符用于boolean类型,结果总是boolean类型
&与,必须两个都为真才是真,| 或,一真一假就是真
^异或,//不同为true,相同为flase

移位运算符

计算机存储数据基本单位//字节:byte,一字节=8位=8个0或1表示(bit比特)1位=0和1;
计算机二进制0和1,逢二进一,优势:字节少数据运算速度快,
八进制逢八进一以0开头 ,十进制0到9,逢十进一,十六进制逢十六进一;
补码:计算机内二进制数值是以补码形式表示,一个正数的补码和其原码形式是一样的,但在负数上有去区别 , 负数的补码& 的二进制形式,按位取反在加1,
如正数10的二进制位一字节0000 1010 存入计算机为补码
-10的补码是绝对值是10,绝对值的表示方式0000 1010,取反为1111 0101再加1为1111 0110是-10的补码
数学运算10-2=8;计算运算是还原成二进制:10+(-2)=8;
十的二进制是0000 1010,-2的二进制是2的绝对值(0000 0010)的二进制,
按位取反=(1111 1101)再加1=(1111 1110);
按位相加0000 1010 + 1111 1110 = 0000 1000 再还原成十进制=8;


位运算符是对两个操作数中的每一个二进制位都进行运算

1.按位取反如:按位还原成二进制是01001111,取反后10110000,还原十进制11001011
2.按位与&,3.按位或|,4.按位异或^
位移运算符 左移:a<<b将二进制形式的a逐位左移b位,最低位空出的b位补0;
代码如正数100,还原成二进制是00000000 00000000 00000000 01100100
100<<3左移三位:00000000 00000000 00000011 00100000
100>>3带符号右移3位:00000000 00000000 00000000 00001100
100>>>3无符号右移3位:00000000 00000000 00000000 00001100

代码如负100:还原成二进制是11111111 11111111 11111111 10011100
-100<<左移3位:11111111 11111111 11111100 11100000
-100>>3带符号位右移3位:11111111 11111111 11111111 11110011
-100>>>3无符号右移3位:00011111 11111111 11111111 11110011
计算机就是按位移来计算数的,面试题用最快速度计算出3*8,就是要位移来计算是最快的
8移多少位来计算24;

9.基本数据类型相互转换

自动类型转换:容量小的自动转换容量大的数据类型,byte,short,int,三者不会互相转换,

如代码:byte b=10; float f=b;//把一个字节类型变量赋给浮点型变量;

强制类型转换:容量大的转换容量小的数据类型;

如代码: long g=1000L; int i=(int)g; //把长整形赋给整形变量
char c=‘a’; int ic=c; 输出结果为ASCII码a为97;

10.JAVA转义字符

| 符号 | 符号含义|
| :-------- | --------:|
| \n | 换行 |

| \r | 回车符在当前第一个 |

| \t | 制表符 |

| \t | 水平制表符 |

| \' | 输出单引号 |

| \“” | 输出双引号 |

| \ | 输出斜杠 |

| \ddd | 八进制字符(ddd) |
| \uxxxx | 16进制Unicode字符 (xxxx) |

本篇文章将JAVA基础优化整合 初学基础Ⅱ难点: ★★★★★★

感谢您的阅读 欢迎您的留言与建议

第2篇-JAVA基础
第4篇-JAVA基础
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }