变量
- 变量是什么:就是可以变化的量
- java是一种强类型语言,每个变量都必须声明其类型
- java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
- 类变量
- 实例变量
- 局部变量
static int allClicks=0; //类变量
String str="hello world"; //实例变量
public void method(){
int i=0; //局部变量
}
public class Test2 {
//类变量 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);
//变量类型 变量名字=new Test2();
Test2 a=new Test2();
System.out.println(a.age); //结果为0
System.out.println(a.name); //结果为null
System.out.println(salary); //结果为2500 是类变量 前面必须加static
}
//其他方法
public void add(){
System.out.println();
}
}
常量
- 常量:初始化后不能再改变的值!不会变动的值
- 所谓常量可以理解为一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变
- 常量名一般使用大写字符
final 变量名=值
final double PI=3.14;
变量的命名规范
- 所有变量 方法 类名: 见名知意
- 类成员变量:首字母小写和驼峰原则: mnthSalary 除了第一个单词以外,后面的单词首字母大写 lastname lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则 Man GoodMan
- 方法名:首字母小写和驼峰原则 run() runRun()
运算符
public class Test4 {
public static void main(String[] args) {
long a=123456156465L;
int b=123;
short c=10;
byte d=8;
System.out.println(a+b+c+d); //运算中有long类型 结果类型就为long
System.out.println(b+c+d); //没有long 结果就为int
System.out.println((double) c+d);
int a1=10;
int b1=20;
a1-=b1; //a1=a1-b1
System.out.println(a1>b1);
System.out.println(a1<b1);
System.out.println(a1==b1);
System.out.println(a1!=b1);
//字符串的连接符 +, String
System.out.println(""+a+b);//结果为a+b 连接起来 并不会进行运算 因为有字符串
System.out.println(a+b+""); //结果正常运算 因为字符串在后面
//三元运算符
//x?y:z
//如果x==true 结果为y 否则为z
int score=80;
String type=score<60?"不及格":"及格"; //如果score小于60分则输出不及格 否则输出及格
System.out.println(type); //及格
}
}
包机制
- 为了更好地组织类,java提供了包机制,用于区别类名的命名空间
- 包语句的语法格式为
package pkg1[.pkg2[.pkg3...]];
- 一般利用公司域名倒置作为包名www.baidu.com com.baidu.www
- 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包.使用“import”语句即可完成此功能
import package1[.package2...].(classname|*);
javaDoc
Scanner对象
next()
- 一定要读取到有效字符后才可以结束输入.
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
- next()不能得到带有空格的字符串
package com.liang.scanner;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("使用next方式进行接收");
if(in.hasNext()){//判断用户有没有输入字符串
String str=in.next(); //输入 hello world
System.out.println(str); //输出一个hello
}
//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯 用完就关掉
in.close();
}
}
nextLine()
- 以enter为结束符 也就是说 nextLine()方法返回的是输入回车之前所有字符
- 可以获得空白
package com.liang.scanner;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("使用nextLine方式进行接收");
if (in.hasNextLine()) {
String str1=in.nextLine();//输入 hello world
System.out.println(str1);//输出 hello world
}
in.close();
}
}
小案例
package com.liang.scanner;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
double sum=0;
int shu=0;
double jun=0;
System.out.println("请输入您要计算求和 跟平均值的数:");
while(in.hasNextDouble()){
double jieshou=in.nextDouble();
shu=shu+1;
sum=sum+jieshou;
jun=sum/shu;
System.out.println("您输入的第"+shu+"值和为:"+sum+"平均值为"+jun);
}
System.out.println("和为:"+sum+"平均值为:"+jun);
}
}
三大基本结构
顺序结构
一行行进行执行
选择结构
-
if单选结构 if(){}
-
if双选结构 if(){}else{}
-
if多选结构 if(){}else if(){}
-
嵌套if结构 if(){ if(){} }
-
switch多选择结构 switch(){ case1 break case2 break default}
package com.liang.base; public class Test5 { public static void main(String[] args) { char grade ='C'; switch (grade){ case 'A': System.out.println("优秀"); break; //跳出循环 case 'B': System.out.println("良好"); break; case 'C': System.out.println("及格"); break; case 'D': System.out.println("不及格"); break; default: System.out.println("未知等级"); } } }
switch语句中的变量类型可以是:
- byte shotr int char
- 从javase 7开始 switch支持字符串String类型了
- 同时case标签必须为字符穿或字面量
package com.liang.base;
public class Test7 {
public static void main(String[] args) {
String a="张三";
switch (a){
case "张三":
System.out.println("张三");
break;
case "李四":
System.out.println("李四");
break;
default:
System.out.println("输入错误");
break;
}
}
}
反编译
循环结构
while循环
package com.liang.base;
public class Test8 {
public static void main(String[] args) {
//计算1+2+3+...+100=?
int i=0;
int sum=0;
while (i<100){
sum=sum+i;
i++;
}
System.out.println(sum); //答案为5050
}
}
do…while循环
for循环
package com.liang.base;
public class Test10 {
public static void main(String[] args) {
//练习1 计算0--100之间的奇数和 跟偶数和
int ji=0;
int ou=0;
for (int i = 0; i <=100; i++) {
if(i%2!=0){//奇数
ji+=i; //ji=ji+i;
}else{//偶数
ou+=i;
}
}
System.out.println("奇数和为:"+ji+"偶数和"+ou);// 结果为 奇数和为:2500 偶数和2550
//练习2 用for循环输出0--100之间能被5整除的数 , 并且每行输出三个
for (int i = 0; i <= 100; i++) {
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){
System.out.println();
}
}
}
}
乘法口诀表
package com.liang.base;
public class 乘法表 {
public static void main(String[] args) {
//九九乘法表
//1 打印第一列
//2 我们吧固定的i再用一个循环包裹起来
//3去掉重复项 i<=j
//4调整样式
for (int j = 1; j <=9; j++) {
for (int i = 1; i <=j; i++) {
System.out.print(i+"*"+j+"="+(j*i)+"\t");
}
System.out.println();
}
}
}
增强for循环
package com.liang.base;
public class Test11 {
public static void main(String[] args) {
int[] numbers={10,20,30,40,50};
//遍历数组的元素
for(int x:numbers){
System.out.println(x);
}
}
}
break continue
package com.liang.base;
public class Test12 {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
if(i==30){
break;
}
System.out.println(i);//结果只运行到30就停止了
}
}
}
package com.liang.base;
public class Test13 {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
if(i%10==0){
System.out.println(); //换行 换行后还继续执行
continue;
}
System.out.print(i);
}
}
}
break在任何循环语句的主体部分,均可用break控制循环的流程
break用于强行退出循环 不执行循环中剩余的语句(break语句也在switch语句中使用)
continue 语句用在循环语句体中,用于终止某次循环的过程,即跳出循环体中尚未执行的语句,接着进行下一次是否执行循环
练习
打印三角形
package com.liang.base;
public class 三角形 {
public static void main(String[] args) {
for (int i = 1; i <=5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print(" ");
}
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
for (int j = 1; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
*
***
*****
*******
*********