从零开始学习JAVA
Hello,World!
class HelloWorld{
public static void main(String[] args){
System.out.println("Hello,World!");
}
JAVA语言的注释
/*
1、JAVA规范的三种注释方式:单行注释、多行注释、文档注释
2、单行注释和多行注释的作用:
①对所写的程序进行解释说明,增强可读性。方便自己,方便别人;
②方便调试所写的代码
3、特点:单行注释和多行注释,注释了的内容不参与编译。(编译后生成的.class结尾的字节码文件不包含注释掉的信息)
4、文档注释的使用:注释内容可以被JDK提供的工具javadoc所解析,生成以网页文件形式体现的该程序的说明文档。
5、多行注释不可以嵌套使用
*/
/**
文档注释
@author universe
@version 0.0
互联网里面有星辰大海。
*/
public class Annotation{
/*
多行注释:
如下的main方法是程序的入口!
main的格式是固定的!
*/
public static void main(String[] args);{
//单行注释:如下的语句表示输出到控制台
System.out.println("Java annotations must conform to the specification!");
}
}
标识符
1、定义:JAVA对各种变量、方法和类等要素命名是使用的字符序列成为标识符。(凡是可以自己取名字的地方都叫标识符。)
2、标识符命名规则:(如不遵循以下规则,编译不通过!需要大家严格遵守)
①有26个英文字母大小写,0-9, _ 或者 $ 组成;
②数字不可以开头;
③不可以使用关键字和保留字,但能包含关键字和保留字;
④JAVA中严格区分大小写,长度无限制;
⑤标识符不能包含空格。
3、Java起名规范:
①包名:多单词组成时所有字母都小写:xxxyyyzzz;
②类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz;
③变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz;
④常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ。
注意1:在取名字时,为了提高阅读性,要尽量有意义,见名知意。
注意2:JAVA采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。
class IdentifierTest{
public static void main(String[] args){
int myAge = 24;
System.out.println(myAge);
}
}
class Love_${}
变量
1、定义:
①内存中存在的一个储存区域;
②该区域的数据可以在同一类型范围内不断变化;
③变量是程序中最基本的储存单位。包含变量类型、变量名和储存的值。
2、说明:
①JAVA中每个变量必须先声明,后使用;
②使用变量名来访问这块区域的数据;
③变量的作用域:其定义所在的一对{}内;
④变量只有在其作用域内才有效;
⑤同一作用域内,不能定义重名的变量。
3、变量的使用
JAVA定义变量的格式:数据类型 变量名 = 变量值。
class VariableTest{
public static void main(String[] args){
int myAge = 24;//变量的定义
System.out.println(myAge);//变量的使用
//System.out.println(myNumber);//编译错误:使用myNumber之前并未定义过myNumber
int myNumber;//声明变量
//System.out.println(myNumber);//编译错误:使用myNumber之前并未赋值过myNumber
myNumber = 9527;//变量赋值
System.out.println(myNumber);//变量使用
//int myAge = 30;//不可以再同一个作用域内定义同名的变量
}
public void method(){
System.out.println(myNumber);//编译不通过,找不到符号‘myNumber’
}
}
变量的分类-按数据类型
1、变量按照数据类型来分:
基本数据类型:
整型:byte、short、int、long;
浮点型:float、double;
字符型:char;
布尔型:boolean。
引用数据类型:
类(class)
接口(interface)
数组(array)
2、按照变量在类中声明的位置:成员变量、局部变量。
class VariableTest{
public static void main(String[] args){
byte b1 = 12;//1、整型:byte(1字节 = 8 bit)\short(2字节)、int(4字节)、long(8字节)
byte b2 = -128;
//b2 = -128;//编译不通过;//① byte 的范围:-128 ~ 127;
System.out.println(b1);
System.out.println(b2);
short s1 = 128;
int i1 = 9527;//② 通常定义整型变量时,我们使用 int 型;
long l1 = 1314520L;//③ 声明 long 型变量时,必须以‘l’或‘L’结尾。
System.out.println(s1);
System.out.println(i1);
System.out.println(l1);
float f1 = 3.1f;//2、浮点型:float(4字节)、double(8字节)
double d1 = 314.1;//① 浮点型,表示带小数点的数值;
System.out.println(d1 + 1);//② float表示数值的范围比long还大
System.out.println(f1);//通常,我们定义浮点型变量时,使用double型。
char c1 = 'q';//3、字符型:char(1字符 = 2字节)
//char c2 = 'AB';//编译不通过//① 定义char型变量,通常使用一对'',内部只能写一个字符;
char c3 = '学';//
char c4 = 'あ';
System.out.println(c1);
//System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
//② 表示方式:a.声明一个字符;b.转义字符;c.直接使用Unicode值表示字符型常量
char c5 = '\n';//换行符
c5 = '\t';//制表符
System.out.print("big" + c5);
System.out.println("hotle");
char c6 = '\u0043';//字母 C
System.out.println(c6);
boolean bo1 = true;//4、布尔型:boolean
boolean bo2 = false;//① 只能取两个值之一:true、false;
System.out.println(bo1);
boolean haveEaten = true;
if(haveEaten){
System.out.println("不能再吃披萨了,\n很遗憾!");
}else{
System.out.println("你可以过来吃一份披萨!");
}
}
}
基本数据类型之间的运算规则
注意:此处讨论的只是7种基本数据类型变量间的运算。不包含boolean类型变量。
1、自动类型转换:
当容量小的数据类型的变量与容量大的数据类型的变量做运算时、结果自动提升为容量大的数据类型。
byte、short、char --> int --> long --> float --> double
注意:当byte、char、short 三种数据类型的变量做运算时,结果为 int 型。
class VariableTest{
public static void main(String[] args){
byte b1 = 2;
int i1 = 129;
//byte b2 = b1 + i1;//编译不通过
int i2 = b1 + i1;
long l1 = b1 + i1;
System.out.println(i2);//131
System.out.println(l1);//131
float f = b1 + i1;
System.out.println(f);//131.0
short s1 = 123;
double d1 = s1;
System.out.println(d1);//123.0
char c1 = 'a';//Unicode 97
int i3 = 10;
int i4 = c1 + i3;
System.out.println(i4);//107
short s2 = 10;
//char c2 = c1 + s2;//错误:不兼容类型;从int转换到char可能会有损失
int i5 = c1 + s2;
byte b2 = 10;
//char c3 = c1 + b2;//错误: 不兼容的类型;从int转换到char可能会有损失
//short s3 = b2 + s2;
//short s4 = b1 + b2;
}
}
2、强制类型转换:自动类型提升运算的逆运算。
① 需要使用强转符:() ;
②注意:强制类型转换,可能会导致精度损失。
class VariableTest{
public static void main(String[] args){
//精度损失举例1
double d1 = 12.9;
int i1 = (int)d1;
System.out.println(i1);//2
//没有精度损失
long l1 = 9527;
short s2 = (short)l1;//9527
//进度损失举例2
int i2 = 128;
byte b1 = (byte)i2;
System.out.println(b1);//-128
}
}
整型常量及浮点型常量默认类型举例
class VariableTest{
public static void main(String[] args){
long l1 = 31415926;//整型常量,默认类型为int型
System.out.println(l);//31415926
//long l2 = 3141592631415926;//编译失败,过大的整数
long l2 = 3141592631415926L;//过大的整数,使用long型
//float f1 = 12.3;//浮点型常量,默认类型为double型
//错误: 不兼容的类型: 从double转换到float可能会有损失
float f1 = (float)12.3;//强制转换
byte b1 = 12;//byte b2 = b + 1;//编译失败;int型转换到byte型可能会有损失
float f2 = b + 12.3;//编译失败;double转换到float可能会有损失
}
}
字符串类型:String类型变量
1、String属于引用数据类型,翻译为:字符串;
2、声明String类型变量时,使用一对 " " ;
3、String 可以和8种基本数据类型变量做运算,且运算只能是连接运算:+;
4、运算的结果仍然是String类型。
class StringTest{
public static void main(String[] args){
String str1 = "Hello,Univser.";
System.out.println(str1);
String s2 = "a";
String s3 = "";//只要不超过内存,"" 内可以任何字符;
//char c = '';//编译不通过,显然char不能像String这样为所欲为;
int num1 = 9527;
String numStr = "代号";
String info1 = numStr + num1;//+:连接运算
boolean bo1 = true;
String info2 = info1 + bo1;//+:连接运算
System.out.println(info2);//代号9527true
}
}
进制
计算机中不同进制的使用说明:
对于整数,有四种表示方式:
①二进制(binary):0、1;满2进1,以 0b 或者 0B 开头;
②十进制(decimal):0 - 9;满10进1;
③八进制(octal):0 - 7;满8进1,以数字0开头表示;
④十六进制(hex):0 - 9及 A - F;满16进1,以 0x 或 0X 开头表示;此处的 A - F 不区分大小写;例如:0x21AF + 1 = 0X21B0。
class BinaryTest{
public static void main(String[] args){
int num1 = 0b110;
int num2 = 110;
int num3 = 0127;
int num4 = 0x110A;
System.out.println("num1 = " + num1);//num1 = 6
System.out.println("num2 = " + num2);//num2 = 110
System.out.println("num3 = " + num3);//num3 = 87
System.out.println("num4 = " + num4);//num4 = 4362
}
}