Java基础
#代码在<基础语法>里面
一、注释、标识符、关键字
#demo01
(一)注释
Java中注释有三种:单行注释(双斜杠//),多行注释(/* /),文档注释(/* */)
书写注释是一个非常好的习惯
(二)标识符
Java所有的组成部分都需要名字。类名、变量名、方法名都被称为标识符
-
标识符注意点
-
所有的标识符都应该以字母,美元符($),或者下划线开始
-
首字母之后可以是字母,美元符,下划线或数字的任意字符组合
-
不能使用关键字作为变量名或方法名
-
标识符是大小写敏感的*
-
可以使用中文或拼音命名,但是十分不建议!!!
合法举例:age , $salary , _value , __1_value
非法举例:123abc , -salary , #abc
(三)关键字
一些常用的关键字:
二、数据类型
#demo02
(一)强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用*
(二)弱类型语言
(三)Java的数据类型分为两大类
- 基本类型
- 引用类型
#demo03拓展:整数拓展,浮点数拓展,字符拓展,布尔值拓展
三、类型转换
#demo04*
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。运算中,不同的数据类型先转化为同一类型,然后进行计算。
低--------------------------------------------------------------------->高
byte, short, char -> int -> long -> float -> double
(一)强制转换(高->低)
public class demo04 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;//输出为-128,内存溢出,所以转换的时候一定要注意
//此处为强制转换,高->低
System.out.println(i);
System.out.println(b);
}
}
(二)自动转换(低->高)
(三)注意点
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换为低容量时,强制转换
-
转换的时候,可能存在内存溢出或精度问题
public class demo05 { public static void main(String[] args) { //操作比较大的数的时候,注意溢出问题 //JDK7新特性:数字之间可以用下划线分割 int money = 10_0000_0000; int year = 20; int total = money*year; long total2 = money*year; System.out.println(total);//输出为-1474836480,计算的时候溢出 System.out.println(total2);//默认是int,就算用long来接受,但是转换之前以及出现问题了 long total3 = money*((long)year); System.out.println(total3);//成功输出正确结果 } }
System.out.println((int)23.7);//输出为23 System.out.println((int)-45.89f);//输出为-45,精度问题
四、变量、常量
#demo06,demo07
Java是一中强类型语言,每个变量都必须申明类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
(一)定义变量
type varName [ =value] [{ ,varName[ =value]}];
// 数据类型 变量名 =值 可以使用逗号隔开来声明多个同类型变量
// 但是不建议同时声明多个变量
public class demo06 {
public static void main(String[] args) {
//定义变量
//int a = 1,b = 2,c = 3; //不建议
int a = 1;
int b = 2;
int c = 3;
String name = "yangyuxi";
char x = 'X';
double pi = 3.14;
}
}
- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每个一声明都必须以分号结束
(二)变量作用域
- 类变量(static)
- 实例变量
- 局部变量
public class demo07 {
//属性:变量
/*实例变量:从属于对象;如果不自行初始化,则这个类型的默认值 0 0.0
布尔值默认false 除了基本类型其他的默认值都是null*/
String name;
int age;
/*类变量 static*/
static double salary = 5000;
public static void main(String[] args) {
//main方法
/*局部变量:必须声明和初始化值*/
int i = 10;
System.out.println(i);//必须赋初始值才输出
//使用实例变量的方式
//变量类型 变量名字 =new demo07()
demo07 Demo07 = new demo07();
System.out.println(Demo07.age);
System.out.println(Demo07.name);
//使用类变量的方式
System.out.println(salary);
}
//============================================
//其他方法
public void add() { }
}
(三)常量
就是初始化后不能再改变值,不会变动的值。可以理解为一种特殊的变量,它的值在被设定后,在程序的运行过程中不允许被改变。
- 常量一般使用大写字符
final 常量名 = 值;
final double PI=3.14;
public class demo08 {
//static是修饰符,不存在先后顺序
static final double PI = 3.14;
//常量通过final来定义
public static void main(String[] args) {
System.out.println(PI);
}
}
(四)变量的命名规范
-
所有的变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则:monthSalary
除了第一个单词以为,后面的单词首字母大写
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Man,Goodman
-
方法名:首字母小写和驼峰原则:run() , runRun()
五、运算符
#Demo01,Demmo02,Demo03,Demo04(拓展Math类),Demo05 , Demo06,Demo07
*** 算术运算符:**+,-,*,/,%,++,–
*赋值运算符:=
*关系运算符:> , < , >= , <= , ==(注意是两个等于) , !=instanceof
*逻辑运算符:&& , || , !
位运算符:& , | , ^ , ~ , >> , << , >>>(了解)
package operator;
public class Demo06 {
public static void main(String[] args) {
//位运算 与二进制有关,计算机底层原理 好处:效率高
/*
A = 0011 1100
B = 0000 1101
A & B -> 0000 1100
A | B -> 0011 1101
A ^ B -> 0011 0001 相同为0,不相同为1
~ B -> 1111 0011 取反
面试题:2*8怎么运算最快
( <<左移 -> *2 >>右移 -> /2)
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
}
}
条件运算符: ? :(三目)
//x ? y : z
//如果x==true,则结果为y,否则结果为z
赋值运算符:+=,-=,*=,/=
补充:字符串的拼接
/*字符串链接符: + (面试题) */
System.out.println(a+b);
System.out.println(""+a+b);//如果字符串在前面,会转化成string再拼接
System.out.println(a+b+"");//如果字符串在后面,则先运算再拼接
运算符优先级:
六、包机制、JavaDoc
(一)包机制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间,包的本质就是文件夹
包语法的格式为:
package pkg1[ . pkg2[ . pakg3…]];
package com.javastudy.operator;
一般利用公司域名倒置作为包名,包里面的名字尽量不要重复
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用import语句即可完成此功能:
import package1[ . package2…] . (classname |*) ;
import com.javastudy.base.demo02;
*会的导入这个包下所有的类
(二)JavaDoc
JavaDoc命令是用来生成自己API文档的(代码在javastudy.base.Doc)
参数信息:
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的JDK版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况