Java基础语法
Posted -yz-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础语法相关的知识,希望对你有一定的参考价值。
Java基础语法
注释
-
平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。
-
注释并不会被执行,是给我们写代码的人看的。
-
书写注释是一个非常好的习惯
-
平时写代码一定要注意规范
-
Java中的注释有三种:
-
单行注释:只能注释一行文字,以“//”开头
System.out.println("Hello,World!"); //输出一个Hello,World!
-
多行注释:可以注释一段文字 /* 注释 */
/* * 我是多行注释*/
- 文档注释
-
/** */
/***
* ░░░░░░░░░░░░░░░░░░░░░░░░▄░░
* ░░░░░░░░░▐█░░░░░░░░░░░▄▀▒▌░
* ░░░░░░░░▐▀▒█░░░░░░░░▄▀▒▒▒▐
* ░░░░░░░▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐
* ░░░░░▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐
* ░░░▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌
* ░░▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒
* ░░▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐
* ░▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄
* ░▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒
* ▀▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒
* 单身狗就这样默默地看着你,一句话也不说。
*/
标识符
-
关键字
-
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符注意点
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($)或者(_)开始
- 首字母之后可以是字母(A-Z或者a-z),美元符($)、(_)或数字的任意组合
- 不能使用关键字作为变量名或方法名。
- 标识符是大小写敏感的
- 正确标识符举例:age,$salary,_value,__1_value
- 错误标识符举例:123abc,-salary,#abc
- 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音
数据类型
-
强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 安全性高,速度较慢
- Java属于强类型语言
-
弱类型语言
- 对变量的使用没有严格规定
- VB、JS属于弱类型语言
-
Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
变量
- 定义:可以变化的量。
type varName [=value] [,varName[=value]];
//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。例如:
//八大基本数据类型
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L; //long类型要在数字后面加个L。小写l效果相同,但可能会被误认为是“1”,因此不推荐使用
//小数:浮点数
float num5 = 50.1F; //float类型要在数字后面加个F
double num6 = 3.141592653589793238462643;
//字符类型
char name = \'A\';
//字符串,String不是关键字,是类
String name1 = "hello";
//布尔值:是非
boolean flag = true;
boolean flag1 = false;
详见标题类型转换后面的变量。
存储单位
- 位(bit):是计算机内部数据存储的最小单位。每个0或1就是1个位。例如,11001100是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。
- 1B(byte,字节)=8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号。
- 1024B=1KB
- 1024KB=1MB
- 1024MB=1GB
- 1024GB=1TB
- 1024TB=1PB
- 1024PB=1EB
- 1024EB=1ZB
- ......
计算机的32位和64位的区别
32位操作系统针对的32位的CPU设计。CPU内部寄存器和寻址总线是32位,指令集可以运行32位数据指令,也就是说一次可以提取32位数据(4个字节,32bit=4Byte)。32位CPU有4G的内存寻址空间
64位操作系统是指特别为64位架构计算机系统而设计的操作系统,在计算机架构中,64位整数、内存地址或其他数据单元,是指它们最高达到64位(8字节)宽。
节选自:百度百科
32位CPU 只能安装32位的操作系统,32位操作系统只能运行32位的程序。64位CPU 可以运行32位或者64位的操作系统,64位操作系统可以运行32位或64位程序。64 位CPU的内存寻址能力更强。32位CPU 地址总线不超过 32,它所能达到的寻址范围,理论上只能使用约 4GB,即不超过2的32次方字节;64 位 CPU,理论上寻址范围可以达到上亿 GB(2 的 64 次方字节)。因此,64位CPU可以支持更大内存,32位CPU只能支持4GB及以下内存。
数据类型拓展
整数拓展:进制
- 二进制以0b作前缀,十进制没有前缀,八进制以0为前缀,十六进制以0x为前缀,0~9分别表示A-F。例:
int i = 10;//10
int i2 = 010;//8
int i3 = 0x11;//17
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
浮点数拓展
面试参考题:银行业务(钱)怎么表示?——BigDecimal数字工具类。
- float具有以下特点:有限、离散、舍入误差、大约(接近但不等于)。
- 因此,最好完全避免使用浮点数进行比较。
- 最好完全避免使用浮点数进行比较。
- 最好完全避免使用浮点数进行比较。
例:
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
System.out.println(f==d);//"=="表示判断f是否等于d。0.1=0.1,因此f=d,可是结果为false
float d1 = 2131313131313f;
float d2 = d1 + 1;
System.out.println(d1==d2);//d1不等于d2,可是结果为true
字符拓展
例:
char c1 = \'A\';
char c2 = \'中\';
System.out.println(c1);//A
System.out.println((int)c1);//表示将char强制转换为int,结果为65
System.out.println(c2);//中
System.out.println((int)c2);//强制转换,结果为20013
由此可得:
- 所有的字符本质还是数字
- 将数据从模拟信号转换为数字信号进行存储和传输的过程称为编码
- 编码常用Unicode表(例如,97=a 65=A),它占2个字节,也就是[0,65536],即2的16次方。要知道,Excel最大也只到65536。常见的“U0000”、“UFFFF”也是Unicode码。
转义字符
例:
char c3 = \'\\u0061\';
System.out.println(c3);//a
- \\u是转义字符,表示将“0061”从Unicode转换为字符
常见的转义字符有:
转义字符 | 意义 |
---|---|
\\a | 响铃(BEL) |
\\b | 退格(BS) ,将当前位置移到前一列 |
\\f | 换页(FF),将当前位置移到下页开头 |
\\n | 换行(LF) ,将当前位置移到下一行开头 |
\\r | 回车(CR) ,将当前位置移到本行开头 |
\\t | 水平制表(HT) (跳到下一个TAB位置) |
\\v | 垂直制表(VT) |
\\\\ | 代表一个反斜线字符\'\'\\" |
\\\' | 代表一个单引号(撇号)字符 |
\\" | 代表一个双引号字符 |
? | 代表一个问号 |
\\0 | 空字符(NUL) |
\\ddd | 1到3位八进制数所代表的任意字符 |
\\xhh | 十六进制所代表的任意字符 |
例:
System.out.println("Hello\\nWorld");
结果是:
Hello
World
* 兴趣拓展
例:
String sa = new String( "hello world");
String sb = new String( "hello world");
System.out.println(sa==sb);//false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//true
有些东西看上去相同,可实际不同。稍做思考,具体原因将会在学习对象时从内存分析得出。
布尔值拓展
boolean flag = true;
if (flag==true)//新手程序员经常如此写
if (flag)//前者的简化,老手程序员经常如此写
- boolean的值只有true和false两个。
- Less is more!代码要精简易读。
类型转换
- 由于Java是强类型语言,所以要进行某些运算时,需要用到类型转换。
数据类型有其优先级:
低级----------------------------------->高级
byte,short,char->int->long->float->double
其中,浮点类型相对于整数类型是高级的。byte、short、char相互之间是平级的。其余,高容量(字节范围)类型相对于低容量类型是高级的。
- 运算中,不同类型的数据先转换为同一类型,然后进行运算。
- 强制类型转换
数据类型由高级向低级的转换称为强制类型转换,其语法为(类型)变量名。
- 自动类型转换
数据类型由低级向高级的转换称为自动类型转换。
- 注意点:
- 不能对布尔值进行转换。
- 不能把对象类型转换为不相干的类型。
- 转换的时候可能存在内存溢出或者精度问题。
例:
int i = 128;
byte b = (byte)i;//内存溢出,即超出byte的容量[-128,127],导致转换后的值非真实值
double b1 = i;
System.out.println(i);//128
System.out.println(b);//-128
System.out.println(b1);//128.0
转换的时候可能存在内存溢出问题。
例:
System.out.println((int)23.7); //23
System.out.println((int)-45.89f); //-45
转换的时候可能存在精度问题。
例:
char c = \'a\';
int d = c+1;
System.out.println(d);//98
System.out.println((char)d);//b
字符的本质是数字再一次被印证了。
参考题:
某人一年挣10亿元,使用Java计算他20年后总共挣的钱。
先设置好变量:
int money = 10_0000_0000;//JDK7的新特性,数字之间可以用下划线分割
System.out.println(money);//1000000000,检查变量
int years = 20;
错解1:设置int类型的total并计算
int total = money*years;
System.out.println(total);//-1474836480,计算时,内存溢出了
错解2:我们将total的int替换为long
long total = money*years;
System.out.println(total);//-1474836480,money*years默认是int,替换之前已经存在问题了
纠正:替换的同时将money或years转换为long
long total = money*((long)years);
System.out.println(total);//20000000000
或
long total = ((long)money)*years;
System.out.println(total);//20000000000
因此,在操作比较大的数时,注意溢出问题。
变量
-
可以变化的量称为变量。
-
Java是一种强类型语言,每个变量都必须声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
一般地,定义一个或多个变量,其语法为:
type varName [=value] [,varName[=value]];
//数据类型 变量名 = 值;
可以使用逗号隔开来声明多个同类型变量,也就是在同一行定义多个变量,但为使代码精简易读,即保证程序可读性,所以不建议这样做。
例:
int a=1;
int b=2;
int c=3;//分行书写,程序可读性良好
反例:
int a,b,c;//变量名未赋值
int a=1,b=2,c=3;//程序可读性差
- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型(例如String)。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
例:
String name = "hello";
char x = \'X\';
double e = 2.71;
变量作用域
Java用一对大括号作为语句块的范围,称为作用域,在作用域里定义的变量,只有在该作用域结束之前才可使用。
一般地,根据作用域的不同,变量可分为以下三种:
- 类变量
有关键字"static"修饰,其作用域与实例变量相同。
例:
public class Demo08
public static void main(String[] args)
其中,main是主程序方法,称为main方法(一个Java应用程序的入口),它是类变量。除此之外,我们还可以使用类变量定义一些属性(可以理解为变量)。
例:
public class Demo08
static double salary = 2500;
public static void main(String[] args)
System.out.println(salary);
- 实例变量
无“static”修饰,从属于对象(这在之后会学习),即作用域为类(class)中,可以在方法的外面,无需初始化值,使用前需声明,语法如下例。
例:
public class Demo08
String name;
int age;
public static void main(String[] args)
//变量类型 变量名字 = new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);//0
System.out.println(demo08.name);//null
如果不自行初始化值,那么这个变量的默认值为“0”(整数类型)、“0.0”(浮点类型)、“u0000”(字符类型)、“false”(布尔值)或“null”(除基本类型以外,其余的默认值)。
- 局部变量
写在方法(method,语句的集合,在一起执行一个功能)中,即它的作用域在方法后的大括号中,且在使用之前必须声明和初始化值。
例:
public static void main(String[] args)
int i = 10;//声明和初始化值
System.out.println(i);//在作用域内使用
System.out.println(i);//超出作用域,无法使用
例:
public class Variable
static int allClicks=0; //类变量
String str="hello world"; //实例变量
public void method()
int i =0; //局部变量
常量
- 我们将初始化(initialize)后不能再改变的值,即不会变动的值称为常量(Constant,也称为静态变量)。
- 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
其语法为:
final 常量名=值
final double E=2.71;
- 常量名一般使用大写字符。
例:
static final double E = 2.71;
public static void main(String[] args)
System.out.println(E);
其中,“static”、“final”、“public”等被称为修饰符,没有先后顺序,如上例中“static final”写成“final static”也是可以的。
变量的命名规范
- 所有变量、方法、类名:要求见名知意
- 类成员变量(除常量以外的变量):遵循首字母小写和驼峰原则(除了第一个单词以外,后面的单词首字母大写):monthlySalary(规范) lastname(不规范) lastName(规范)
- 常量:全部使用大写字母,单词之间使用下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
Java基础| Java概述与基础语法案例
⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开发的代码能力打下坚实的基础。
以上是关于Java基础语法的主要内容,如果未能解决你的问题,请参考以下文章