变量
-
变量是什么:就是可以变化的量!
-
Java是一种强类型语言,每个变量都必须声明其类型
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value] [{, varName[=value]}]
//数据类型 变量名 = 值;
//可以使用逗号隔开来声明多个同类型变量,但不推荐
注意事项
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型(
String) -
变量名必须是合法的标识符
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
public class HelloWorld {
public static void main(String[] args) {
//int a, b, c;
//int a=1, b=2, c=3;
//影响程序的可读性,不提倡
int a = 1;
String name = "Harryking";
char x = 'X';
double pi = 3.14;
}
}
变量的作用域
-
类变量
-
实例变量
-
局部变量
public class HelloWorld {
static int allClick = 0; //类变量
String str = "hello world"; //实例变量
public void method() {
int i = 0; //局部变量
}
}
public class HelloWorld {
//属性:变量
// 类变量 static
static double salary = 2500;
//实例变量:从属于对象
//如果不自行初始化,则是这个类型的默认值
//(0 0.0 u0000)
//布尔值:默认是false
//除了基本类型,其余默认值都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
//作用域仅在main方法的大括号中
//实例变量的使用
//变量类型 变量名字 = new HelloWorld();
HelloWorld helloWorld = new HelloWorld();
System.out.println(helloWorld.age);
System.out.println(helloWorld.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add()
{
}
}
变量的命名规范
-
使代码便于阅读
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则
monthSalary除了第一个单词外,后面单词的首字母大写 -
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:
MAX_VALUE -
类名:首字母大写和驼峰原则:
GoodMan -
方法名:首字母小写和驼峰原则:
runRun()
常量
常量Constant:初始化initialize后不能再改变值!不会变动的值
所谓常量可以理解成一种特殊的变量, 它的值被设定后,在程序运行的过程中不允许被改变
final 常量名 = 值 //eg final double PI = 3.14;
常量名一般使用大写字符
public class HelloWorld {
//static、final皆为修饰符,不存在先后顺序、
//即二者可调换顺序
//除此之外还有public,private等
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
基本运算符

赋值运算符
以及拓展的部分皆是同C语言
算术运算符
package operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//Ctrl + D:复制当前行到下一行
int a = 10;
int b = 20;
System.out.println(a + b); //0
System.out.println(a - b); //-10
System.out.println(a * b); //200
System.out.println(a / b); //0
System.out.println(a / (double)b); //0.5
long c = 123123123123L;
int d = 123;
short e = 10;
byte f = 8;
//若基本运算中存在double则运算结果为double
//除此之外若存在Long其结果为Long
//此外的情况结果都为Int
System.out.println(a+b+c+d); // Long
System.out.println(b+c+d); // Int
System.out.println(c+d); // Int
//取余,模运算
int g = 21;
System.out.println(g % a);
// 21 / 10 = 2 ... 1
}
}
一元运算符:++自增--自减,用法同C
关系运算符
package operator;
public class Demo01 {
public static void main(String[] args) {
//关系运算符返回的结果:true false 布尔值
//if中常用
int a = 10;
int b = 20;
System.out.println(a > b); //false
System.out.println(a < b); //true
System.out.println(a == b); //false
System.out.println(a != b); //true
}
}
package operator;
public class Demo01 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(b && a));
//逻辑与运算:两个变量都为true,结果才为true
System.out.println("a || b:"+(b || a));
//逻辑或运算:两个变量有一个为true
//则结果为true
System.out.println("!(a && b):"+!(b && a));
//如果是true,则变为false
//如果是false,则变为true
//记住以上的输出形式,以+连接输出的两个部分
//短路运算
int c = 5;
boolean d = c < 4 && c ++ < 4;
System.out.println(d);
System.out.println(c);
}
}
工具类
幂运算
N^M pow函数
package operator;
import static java.lang.Math.pow;
public class Demo01 {
public static void main(String[] args) {
double pow = pow(2, 3);
System.out.println(pow);
}
}
很多运算我们会使用一些工具类来操作
位运算
特点 -- 效率极高!!!
package operator;
public class Demo01 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
---------------------
和运算
A & B = 0000 1100
与运算
A | B = 0011 1101
异或运算 -- 相同为0,不同为1
A ^ B = 0011 0001
取反运算
~ B = 1111 0010
2 * 8 == 16 -> 2*2*2*2
<< 左移 *2
>> 右移 /2
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2 << 3);
}
}
字符串连接符
+ 在 sout中输出是,若是遇见String则连接字符串输出
package operator;
public class Demo01 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//sout中当String类型出现时+为字符串连接符
//其余时候依旧为算术运算符
System.out.println(""+ a + b);//1020
System.out.println(a + b +"");//30
}
}
条件运算符
? :即使三元运算符
用法同C语言
优先级
建议都是用括号,提高可读性

包机制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
包的本质 -- 文件夹
包语句的语法格式
//定义包 package pkg1[.pkg2[.pkg3[...]]];
一般利用公司域名倒置作为包名
域名:www.Harryking.com -> 包名:com.Harryking.www
为了能使用某一个包的成员,我们需要在Java程序中明确导入改包,使用import语句导入即可
import package1[.package2[...]].(classname|*)
注意包名尽量不重复可能在导入时发生冲突
创建包时可以一次性创造内涵关系,其中以.分隔
通配符
import com.Harryking.* //导入这个包下所有的类!
Java Doc
将我们的注释信息生成一个帮助文档
javadoc命令是用来生成自己的API文档的
JDK帮助文档
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的JDK版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
package com.Harryking.www;
//类注释
/**
* @author Harryking
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
//方法注释
/**
* @author Harryking
* @param name
* @return
* @throws Exception
*/
public String test (String name) throws Exception{
return name;
}
//通过CMD命令行 javadoc [-encoding UTF-8 -charset UTF-8] Java文件
//IUEA生成JavaDoc文档! 面向百度编程!
}
面向百度编程
注记
基础部分的一切知识,后面几乎每天都会有
Java流程控制
Scanner对象
java.util.Scanner是Java5的新特征
我们可以通过Scanner类来获取用户的输入
//基本语法 Scanner s = new Scanner(System.in);
通过Scanner类的next()和nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()和hasNextLine()判断是否还有输入的数据
next()方法
-
一定要读取到有效字符后才可以结束输入
-
对输入有效字符之前遇到的空白,
next()方法会自动将其去掉 -
只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
-
next()不能得到带有空格的字符串
//next()方式
package com.Harryking.base;
import java.util.Scanner;
public class Helloworld {
public static void main(String[] args) {
//创造一个扫描器对象,用于接受键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next的方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
//使用next的方式接收
String str = scanner.next();
//程序会等待用户输入完毕
System.out.println("输出内容为:"+str);
//凡是属于IO流(输入输出)的类不关闭会一直占用资源,要养成好习惯用完就关掉
scanner.close();
}
}
}
nextLine()方法
-
以
Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符 -
可以获得空白
//nextLine()方法
package com.Harryking.base;
import java.util.Scanner;
public class Helloworld {
public static void main(String[] args) {
//从键盘接受数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//判断是否还有输入
if(scanner.hasNextLine()) {
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str);
}
scanner.close();
}
}
注:if的判断语句可无
进阶使用
package com.Harryking.base;
import java.util.Scanner;
public class Helloworld {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int i = 0;
float f = 0.0F;
System.out.println("请输入整数:");
//如果...那么
if (scanner.hasNextInt()) {
i = scanner.nextInt();
System.out.println("整数数据:"+ i);
} else {
System.out.println("输入的不是整数!");
}
System.out.println("请输入小数:");
if (scanner.hasNextFloat()) {
f = scanner.nextFloat();
System.out.println("小数数据:"+ f);
} else {
System.out.println("输入的不是小数!");
}
scanner.close();
}
}
问题:我们可以输入多个数字,并求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
package com.Harryking.base;
import java.util.Scanner;
public class Helloworld {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//计算输入了多少个数字
int m = 0;
//通过循环判断是否还有输入,并对里面对每一次进行求和和统计
while (scanner.hasNextDouble()) {
double x = scanner.nextDouble();
m ++;
sum += x;
System.out.println("你输入了第"+ m + "个数据,然后当前结果sum = " + sum);
}
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值为" + (sum / m));
scanner.close();
}
}









