Java SE的基础语法一
注释
-
单行注释
// 这是单行注释
public class hello{ public static void main(String[] args){ //这是单行注释 System.out.println("hello,world"); } }
-
多行注释
/* 这是多行注释*/
public class hello{ public static void main(String[] args){ /*这是多行注释*/ System.out.println("hello,world"); } }
-
文本注释
/*
*@…
*/
标识符
Java中的类名、变量名、方法名都成为标识符
标识符以 大写字母(A-Z)、小写字母(a-z)、下划线(_)、美元符号($)开头;不能以关键字作为标识符;区分大小写
public class hello{
public static void main(String[] args){
}
}
java的数据类型
-
位(bit):计算机内部数据存储的最小单位
-
字节(byte):计算机内数据处理的基本单位,习惯使用大写B表示
-
字符:是指计算机中使用的字母、数字、字、符号
1bit表示1位
1Byte表示一个字节,1B=8b
1024B=1KB
1024KB=1MB
1024M=1G
Java是强数据类型,所有的变量需要先定义后使用
public class hello {
public static void main(String[] args) {
//整型
int num1=100;
short num2=30;
long num3=40L;
byte num4=20;
//小数
float num5=10.2F;
double num6=20.82;
//字符
char name='a';
//布尔值
boolean flag= true;
boolean flag2=false;
}
}
注意:在定义float和long类型时,需要在后面分别加上F和L。
二进制:0b
八进制:0
十六进制:0x
public class demo01 {
public static void main(String[] args) {
int a0=0b10; //2 二进制表示方法 0b
int a1=10; //10
int a2=010; // 8 八进制表示方法 0
int a3=0x10; // 16 十六进制表示方法 0x
System.out.println(a0);
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
}
}
public class demo02 {
public static void main(String[] args) {
//浮点数扩展 银行业务的扩展 BigDecimal(数学工具类)
//float是有限的 舍入误差 接近但不等于
//最好完全使用浮点数进行比较
float f=0.1f;
double f2=1.0/10;
System.out.println(f==f2); //false
float d=232332342432423423f;
float d2=d+1;
System.out.println(d==d2); //true
}
}
变量
变量的三要素:类型 + 名称 + 值
相同作用域中的变量不能重名
程序中+号的使用
当左右两边都是数值型时,做加法运算
当左右两边有一方为字符串时,做拼接运算
字符类型探讨
-
字符型存储到计算机中,需要将字符对应的码值(整数)找出来,比如’a’
在存储过程中:‘a’ -->码值97 -->二进制(1100001)–>存储
读取过程:二进制(1100001)–>97–>‘a’–>显示结果
-
字符和码值的对应关系时通过字符编码表决定的
ASCII 编码表 一个字节可表示128个字符
Unicode编码 固定大小的编码,使用两个字节表示字符,字符和汉字统一都占用两个字符
utf-8编码 大小可变的编码 字符使用1个字节,汉字使用3个字节
gbk编码 可以表示汉字,字母使用1个字节,汉字使用2个字节
gb2312 可以表示汉字,gb2312<gbk
big5码 可以表示繁体中文,台湾,香港
基本数据类型转换
自动类型转换
在java程序中,精度小的类型自动转化为精度大的数据类型
char --> int --> long -->float --> double
byte --> short --> int --> long --> float --> double
- 有多种类型的数据混合运算时,系统首先自动将所有数据转化成容量最大的那种数据类型,然后进行计算。
- 当将精度大的数据类型赋值给精度小的数据类型时,就会报错,反之就会进行自动类型转换。
- byte ,short和char 之间不会发生自动转化,当将一个具体的值给byte,只要给的值在byte的范围内(-128 - 127)之间即可。但如果是变量的赋值,则要判断类型。
- byte,short,char 这三者之间只要任意一个参与运算,在运算之前首先转化为int 类型。
- boolean 类型不参与转化
- 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。
强制类型转换
强制类型转换为自动类型转换的逆过程,将容量大的数据类型转化为容量小的数据类型,使用时加上强制转化符(),但可能造成精度降低或者溢出。
基本数据类型与String类型的转换
1.基本数据类型----->String类型
将基本数据类型的值 + ”“即可。
2. String----->转化为基本数据类型
使用包装类
String s = "123";
int num1 = Integer.parseInt(s);
double num2 = Double.parseDouble(s);
float num3 = Folat.parseFloat(s);
Long num4 = Long.parseLong(s);
byte num5 = Byte.parseByte(s);
short num6 = Short.parseShort(s);
在将String 类型转化为基本数据类型时,要保证String类型能够转化为有效的数据。如果格式不整错,会抛出异常。
基本的运算符
-
算数运算符
±*/ % ++ –
-
赋值运算符
=
-
关系型运算符
< > >= <= == !=
-
逻辑运算符
$$ || !
自增自减运算
public class demo01 {
public static void main(String[] args) {
int a =3;
int b=a++;
System.out.println(a); //4
int c = ++a;
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
}
}
逻辑运算符
public class demo02 {
public static void main(String[] args) {
//逻辑运算
boolean a=true;
boolean b=false;
System.out.println("a && b:"+(a&&b)); //false
System.out.println("a || b:"+(a||b)); //true
System.out.println("!(a && b):"+!(a&&b) );//true
//短路运算
int c=6;
boolean d=(c<2)&&(c++<4);
System.out.println("d的值:"+d); //false
System.out.println("c的值:"+c);//6 由于c<2是false,所以不执行c++
}
}
位运算
public class demo03 {
public static void main(String[] args) {
/*
位运算 & | ~
& 两个全1才为1,有一个0则为0
| 有一个1则为1,全0才为0
^ 亦或 全0为0 ,有一个1则为1
~ 取反
>> 左移:乘法运算*2
>> 右移: 除法运算/2
*/
}
}
字符串连接符
public class demo04 {
public static void main(String[] args) {
//字符串连接符 +两侧只要存在一个string类型的数据,则两侧都变为string类型
int a=30;
int b=90;
System.out.println(a+b);//120
System.out.println(""+a+b);//3090
System.out.println(a+b+"");//120
}
}
三元运算符
public class demo05 {
public static void main(String[] args) {
//三元运算符 x? y:z
// 如果x为true,则输出y,否则删除为z
int s=90;
String type=s <100? "优秀":"不优秀";
System.out.println(type);
}
}
包机制
包语句的语法格式:
package pkg1[. pkg2[. pkg3....]];
一般利用公司的域名倒置作为包名
为了能后使用某一个包的成员,需要使用 import进行导包
import package1[. package2....].(classname|*);
javaDoc
javadoc命令使用来生成自己API文档的;
@author 作者名
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
package com.hkh;
//类注释
/**
* author hkh
* version 1.0
* since 1.8
*/
public class demo06 {
String name;
//方法注释
/**
*
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}