Java基础 基本语法回顾

我对于java基本语法本身有一定的基础。真的,再学一遍会有不一样的感觉。

 

1、代码结构
public class 类名{
public static void main(String[] args){
//代码块
}
}

在eclipse中,一些快捷键
alt + shift + N 新建
C 新建类
P 新建包

syso ->System.out.println();
alt + / 跳出提示
ctrl + S 保存
ctrl + shift + S 全部保存
文件名前面*表示未保存
alt + shift + X,J 运行

-----------
2、软件包[package]
语法:
package 包名;

包名就是由字母、数字、_,不以数字开头的字符字符序列。
多级包名之间使用.隔开,如:
package java.lang;

package a.b.c.d.e.f.g;//ok

命名规则:
A)、一般以公司域名为前半部分,如:com.ali.xx.xx.xx; com.tz.xx.xx;
B)、以项目名和功能划分为后半部分,如:com.ali.crm.servive; com.tz.se.day02;

包的作用;
包名在编译完成后生产的字节码中,会有对应的目录结构。
所以,它可以很好地管理源文件和字节码。
它还扩展了类的命名空间。

如:有一个类都叫:Date 
那我们可以把它存放在不同的包中,如:
java.util.Date;
java.sql.Date;
这两个类的名字[简名]虽然不一样,但是处在不同的包中,是可行的。
他们的全限定名是不一样的,因为全限定名是 包名.类名

3、导入语句
语法:
import 包名.类名|*;
支持通配,只能通配类名,不能通配包名。
可以写多次。

何时需要使用导入语句?
当一个类中需要使用非本包中的其他类时,则需要使用导入语句。

除非目标类是在java.lang下

ctrl+D 删除该行
语句 statement

4、注释[comments]
是为了增加代码的可读性、理解性的一种手段,JVM的编译器是会忽略他的。
JAVA语言支持三种注释:
A、单行注释,以//开头
B、多行注释,以/*开头,以*/结尾
C、文档多行注释,以/**开头,以**/结尾
如:
/**
*XXXX
*XXXX
*XXXX
*/
这种注释,将来可以通过javadoc命令来提取


ctrl + M 窗口最大化

充满一颗好奇心是非常重要的。


Window->Preferences->Code Templates
->Comments   注释模板
-->Files
/**
*
*/

-->Types
/**
*@author &{user}
*@version 1.0
*@CreateDate ${date} ${time}
*
*${tags} 本类${file_name}的描述:
*/
-->Code 代码模板

5、数据类型
数据
类型

两个大类:
1.基本类型,分8种
byte 1个字节[-128,+127]
short 2个字节[-32,768,+32,767]
int 4个字节[-2,147,483,648,+2,147,483,647] [-2^31,+2^31-1]
long 8个字节[-2^63,+2^63-1] 10^19
double 8个字节 10^308
float 4个字节10^38
char 2个字节一种特殊的整数,范围同short
boolean 1个字节 只有2个值,true和false

在Java中,最高位代表符号位,1为负,0为正。
以8位二进制为例,所以:

二进制 十进制
0 000 0000  =>0
0 111 1111  =>  +127

1 000 0000  =>  -128
1 111 1111  =>  -1

2.对象类型【数不胜数】
所有的非基本类型都是对象类型,如:
String,System...

所以,我们编写程序,也就是不断地创建类型.
因为我们想表达我们要表达的数据.

了解计算机存储数据的方式
采用二进制【由0和1组成】
规定每8位为一个字节。
这样,1个字节所能表达的状态有:2^8=256 种


6、变量、常量、字面量
变量,variable,是一种可以变化的量
语法:
数据类型 变量名 [= 初始值];[]代表可以省略
变量名,由字母、数字、_组成,并且不能以数字开头。
如:i,a,ai,hehe,a5...

注:给变量命名时尽肯能地有意义[见名知意]

如:定义一个变量来存储年龄
int age;//变量没有初始化
age = 10;//给变量赋值
以上两行语句也可以合在一起:
int age = 10;

//定义一个长整型变量,并初始化为100.
long a = 100L; //长整型字面量以L或l结尾

//定义一个浮点数变量
double height = 176.5;

//单精度浮点
float weight = 68.5F;//以F或f结尾

常量 literal
是不变的变量
语法:
final 数据类型 常量名 = 初始值;
如:
int i = 100;
i = 90;//ok
final int J =  200;//常量
J = 230;//error
注:
常量名一般采用大写字母。
如:
final String MSG = "hahaha";

==
字面量[literal] [constant]“双引号括起来的”

就是字面本身的量.
只有8种基本类型的字面量以及字符串String类型才有字面量。
/*
int result = 1 * 8 + 1;

int i = 1;
int k = 8;
int j = 1;
int result = i * k + j;
*/
如:1,4,5,100L,true,false,'a',"abc";

作用:用来给变量或者常量赋值。

快捷键
ctrl + alt + 下箭头 屏幕180度翻转

在eclipse中 ctrl + alt + down 复制当前行
alt + down 粘贴复制到下一行
home 行首 
end 行尾
alt + down 代码下拉一行


Debug
断点 breakpoint 双击行标
挂起 Suspended
F5 (Step Into)
F6 (Step Over)一步一步走,一行一行走
F7 (Step Return)
F8 一个一个断点走

 

 

 

----------------
1.运算符[opertator]
A.赋值运算符
=
左值,出现在赋值运算符左边的量【局部变量、常量】
右值,出现在赋值运算符右边的量【局部变量、常量、字面量】


B.算术运算符
+,-,*,/,%,++,--,+=,-=,*=,/=,%=


针对++和——运算符,它分为:前 和 后操作
前++,变量本身和表达式的值都增1.
后++,表达式的值不变,变量本身的值增1.


JAVA基本类型中,除了boolean不能做算术运算外,其它的7种类型都
可以进行算术运算,它们遵守如下两条规则:
A.byte,short,char,int之间的运算,结果总是int
B.除A外规则,其他的按照从小到大的原则进行转换,如下:
byte,short,int ->long ->float ->double
char/


--
类型转换问题
A.隐式类型转换
当小范围变量、字面量赋值给大范围变量时发生。
如:
byte b1 = 12;
int i = b1;//ok
char c = 'a';
i = c;//ok,结果是 97


B.显示类型转换【强制类型转换】
当大范围变量、字面量赋值给小范围变量时发生。
语法:(新类型)变量或者表达式或者字面量
int i = 97;
char c = i;//error,有可能丢失精度
char c = (char)i;//ok,做了强制类型转换


---
有关字符的表达方式
在JAVA中,字符使用单引号括起来,它有如下三种表达方式:
A.普通表达方式,每对单引号中只能有唯一的字符
char c1 = 't';
char c2 = '你';

B.特殊字符表达式[使用转义符转义过的]
char c3 = '\t';//制表符
这类特殊字符有:
’\r' 回车
'\n' 换行
'\'' 单引号
'\\' 反斜杠
'\"' 双引号
...
C.采用UNICOD字符表示法
语法:'\u 4位16进制表示法'


如:
char c1 = '我';
改成unicode表示法:
char c1 = '\u6211';


通过jdk提供的 native2ascii.exe命令可以把任意的中文转换成unicode字符码
ctrl + C 退出




--
字符是一种特殊的整数。
java采用双字节编码,就意味着它可以表达 2 ^ 16 = 65536 个字符


在计算机中,要存储字符,都需要把字符转换成整数,进而成为二进制。
这就需要字符映射表,也就是码表【字符集表】
计算机中最原始的字符集是ASCII码表,不同的码表对字符的码表是不一
样的,其中,ASCII码表采用单字节编码,也就是它最多可编256个字符。
字符 码值
'a' 97
'z' 122
'A' 65
'Z' 90
'0' 48
'9' 57


中文字符集采用双字节编码,但是,为了向上兼容ASCII码值,前256
的值与ASCII码一模一样,这样就兼容了ASCII码表。
【所有主流的字符集都会无条件向上兼容ASCII码表】
中文字符集:
GB2312 ->  GBK

全球统一的字符集:
UTF-8 [支持中文],它采用动态编码技术。


所以,当文本文件的编解码不一致时,就会产生乱码。


/******不要用记事本去存储UTF-8格式的文件。*****/




C.比较运算符
>,<,>=,<=,==,!=
注:
比较运算符的结果一定是boolean值。


如:
boolean b = 5 > 3;


D.逻辑运算符
&& 逻辑与,两边同时成立,结果才成立。
|| 逻辑或,两边同时不成立,结果才不成立。
! 真为假,假为真
注:
逻辑运算符要求它的操作数必须是boolean类型。


如:
boolean b = (5 > 3) && (5 % 3 == 0);
&& 和 || 是短路运算符。


E.三目运算符
?:
语法:
expr1?exper2:exper3;
当expr1成立时,则执行并返回expr2,否则,执行并返回exper3.


如:
int i = 19;
String str = (i % 2 == 0) ? "偶数" : "奇数";


F.位运算符
& 按位与,两边为1,结果为1,有一边为0,结果为0。
| 按位或,两边为0,结果为0,有一边为1,结果为1。
^ 按位异或,相同为0,不同为1。
~ 按位取反,0位1,1为0。
>> 右移位,高位补符号位。
>>> 无符号右移位,高位总是补0。
<< 左移位
&=,|=,^=,~=,>>=,>>>=,<<=


--
二进制转十进制,乘幂相加法。


以整数为例,如:
二 十
10 2 
11 2
10110 22 
101111011 187


十进制转二进制,除2取余,直到商为0


注:
在java中,支持二、八、十、十六进制的字面量,默认下,
整数都是以十进制表达的。


如果你想用二进制表达整数,则需要以0b开头。
int i = 0b1011101;//ok


如果你想用八进制表达整数,则需要以0开头。
int i = 015;//ok,相当于十进制13


如果你想用十六进制表达整数,则需要以0x开头。
int i = 0x1F;//ok,相当于十进制的31


--
求负数的二进制方法:
1).先算 这个负数 绝对值 减1的 二进制
2).按位取反:1111111111... 011  => 共计32位


--
位运算口诀
清0取位要用与,某位置1可用或,
若要取反和交换,轻轻送送用异或。


这个口诀中,关键要找到掩码[mask]


比如:
1.判断一个整数的奇偶性。
//定义掩码:
int mask = 0x1;//00000...0001
int i = ...;
//判断
String iStr = (i & mask) == 0 ?"偶数" : "奇数";


2.高24位不变,低8位取反
//定义掩码:
int mask = 0xFF;
int i = ...;
//判断
String iStr = mask ^ i;
中间8位取反
//定义掩码:
int mask = 0xFF000;
int i = ...;
//判断
String iStr = mask ^ i;
3.一个整数连续异或另一个整数两次,其值不变。(最简单的加密)
如:
int a = 18;//10010
int b = 21;//10101


a ^ b ^ b 的结果将会还是 a
交换a和b:
a = a ^ b;//a = a ^ b;
b = a ^ b;//b = b ^ a ^ b;相当于a异或了b两次,回到b
a = a ^ b;//a = a ^ b ^ a;相当于b异或了a两次,回到a


2.表达式[expression]
由变量、常量、字面量与运算符组合成的合法语句。
如:
int i = 9;//变量定义,也是 赋值表达式
int j = i * 2 + 1;

3.分支语句
if语句


switch语句


4.循环语句
for循环
while循环
do while循环

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耀耀zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值