目录
因为一些原因,断更了很久,之后会不断更新学习路线,谢谢大家的支持。
一.变量类型
1.类变量(静态变量)
• 使用static声明的变量,可以直接用 类名.变量名 去访问
• 一个类里不管创建多少个对象,都只有类变量的一份拷贝,其中数值默认为0,布尔类型默认为false,引用类型默认为null
• 一般这样声明:public static final
public static String NAME;
public static int AGE;
public static boolean FLAG;
2.实例变量
• 使用 对象名.变量名 进行访问
• 对象被实例化后,实例变量的值就会确定,可以是赋值,也可以是默认值
• 访问修饰符可以修饰实例变量,通常用private修饰,且通过方法来进行查看或修改
public class Student{
//类变量
public static final String PREFIX ="...";
//实例变量
private int age;
private String name;
//通过方法进行修改或访问
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
3.局部变量
•方法中的变量
•声明在方法、语句块、形式参数等
•访问修饰符不能修饰局部变量
•没有初始值,必须在初始化后才可以被使用
二.运算符
1.赋值运算符
赋值运算符以符号“=”表示,为一个二元运算符,将右方的值赋给左方的操作数,例:
int a = 100;
赋值运算符在处理时会先取得右方表达式处理后的结果,因此一个表达式中如果含有两个或以上的“=”运算符,会从最右边的“=”开始处理
2.算术运算符
算术运算符主要有+(加)、-(减)、*(乘)、/(除)、%(取余),都是二元运算符
需要注意在进行处罚运算时,0不能作为除数去运算
算术运算符模拟计算器:
import java.util.Scanner;
public class ArithmeticOperator{
public static void main(String [] args){
Scanner sc = new Scanner(System.in); //创建扫描器,获取控制台输入的值
System.out.println("请输入两个数字,并用空格隔开(num1 num2):"); //输出提示
//记录输入的两个数字
double num1 = sc.nextDouble();
double num2 = sc.nextDouble();
System.out.println("num1和num2的和为:"+(num1+num2));
System.out.println("num1和num2的差为:"+(num1-num2));
System.out.println("num1和num2的积为:"+(num1*num2));
System.out.println("num1和num2的商为:"+(num1/num2));
System.out.println("num1和num2的余数为:"+(num1%num2));
sc.close(); /关闭扫描器
}
}
3.自增、自减运算符
自增++
自减--
自增、 自减运算符为单目运算符,可以在操作元之前,也可以在操作元之后,其中操作元必须为整型或浮点型的变量,作用是使变量的值增加1或减少1
放在操作元前面,会先将变量的值加1或减1,然后再使该变量参加表达式的运算;而放在操作元的后面,会使变量先参与表达式的运算,然后再将该变量加1或减1
++a(--a) //表示在使用变量a之前,先使a的值加1或减1
a++(a--) //表示在使用变量a之后,使a的值加1或减1
int a = 4
b=++a; //先将a的值加1,然后再赋值给b,此时a的值为5,b的值为5
b=a++; //先将a的值赋值给b,再将a的值加1,此时a的值为5,b的值为4
4.比较运算符
比较运算符为二元运算符,运算结果是boolean类型,对应关系成立时,结果为true,否则为false
运算符 | 作用 | 操作数据 |
> | 比较左方是否大于右方 | 整型、浮点型、字符型 |
< | 比较左方是否小于右方 | 整型、浮点型、字符型 |
== | 比较左方是否等于右方 | 基本数据类型、引用型 |
>= | 比较左方是否大于等于右方 | 整型、浮点型、字符型 |
<= | 比较左方是否小于等于右方 | 整型、浮点型、字符型 |
!= | 比较左方是否不等于右方 | 基本数据类型、引用型 |
5.逻辑运算符
返回类型为布尔类型的表达式,可以组合在一起构成更复杂的表达式
运算符 | 含义 |
&&、& | 逻辑与 |
|| | 逻辑或 |
! | 逻辑非 |
public class Calculation{
public static void main(String [] args){
int boys = 15; //男生人数
int girls =17; //女生人数
int totle = boys + girls; //总人数
boolean result1 = ((boys > girls) && (totle > 30)); //男生人数大于女生人数且总人数大于30人
boolean result2 = ((boys > girls) || (totle > 30)); //男生人数大于女生人数或总人数大于30人
输出结果
System.out.println("男生人数大于女生人数且总人数大于30人:"+result1);
System.out.println("男生人数大于女生人数或总人数大于30人:"+result2);
}
}
6.三元运算符
三元运算符的使用格式:
条件式 ? 值1:值2
运算规则:若条件式的值为true,则整个表达式取值1,否则取2,例:
boolean b = 20 < 45 ? true : false;
上述表达式“20<45”的运算结果如果返回真,那么boolean型变量b取值为true,相反则为false
7.运算符优先级
运算符优先级从高到低为:
增量、减量运算符
算术运算符
比较运算符
逻辑运算符
赋值运算符
三.流程控制
1.条件语句
if条件语句
关键字if之后是作为条件的“布尔表达式”,如果该表达式返回的结果是true,则执行后面的语句;如果是false,则不执行if条件之后的语句。if条件语句可分为以下三种:
第一种:
if(布尔表达式){
语句序列
}
布尔表达式:必要参数,最后返回的结果必须是布尔值
语句序列:可选参数,可以是一条或多条语句
例:判断手机号码是否存在
public class TakePhone{
public static void main(String [] args){
int phoneNumber = 123456789; //创建变量,保存电话号码
if(phoneNumber != 34673466){ //如果此电话号码不是34673466
System.out.println("对不起,你拨打的号码不存在"); //提示号码不存在
}
}
}
第二种:
if(条件表达式){
语句序列1
}else{
语句序列2
}
针对某种条件有选择的做出处理,通常表示为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”
例:密码校验
public class Login{
public static void main(String [] args){
int password = 987654321; //密码值
if(123456789 == password){ //如果密码是123456789
System.out.println("密码正确");
}else{
System.out.println("密码错误");
}
}
}
第三种:
if(条件表达式1){
语句序列1
}else if(条件表达式2){
语句序列2
}
...
else if(条件表达式n){
语句序列n
}
针对某一事件的多种情况进行处理,表现为“如果满足某种条件,就进行处理,否则满足另一种条件则执行另一种处理”
例:饭店座位分配
public class Restaurant{
public static void main(String [] args){
System.out.println("欢迎光临");
int count = 9;
System.out.println("回答"+count+"人");
if(count <= 4){
System.out.println("请到四人桌用餐");
}else if(count > 4 && count <= 8){
System.out.println("请到八人桌用餐");
}else if(count > 8 && count <= 16){
System.out.println("请到楼上包厢用餐");
}else{
System.out.println("抱歉,暂时没有这么大的包厢");
}
}
}
switch多分支语句
在编程中,一个常见问题就是检测一个变量是否符合某个条件,这可以用if语句来进行判断,而当数据量较多时,用if语句进行判断就会导致程序变得和笨重,因此我们可以用switch语句将动作组织起来,以一个简单明了的方式来实现“多对一”的选择,语法如下:
switch(表达式){
case 常量值1:
语句块1;
break;
case 常量值2:
语句块2;
break;
...
case 常量值n:
语句块n;
break;
dedault:
语句块n+1;
break;
}
switch语句中表达式的值必须是整型、字符型、字符串型或枚举型
同一个switch语句,case的常量值必须互不相同
例:判断分数属于哪类成绩
import java.util.Scanner;
public class Grade{
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩");
int grade = sc.nextln();
switch(grade){
case 10:
case 9:
System.out.println("成绩为优");
break;
case 8:
case 7:
case 6:
System.out.println("成绩为中");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
System.out.println("成绩为不合格");
break;
default:
System.out.println("成绩无效");
}
sc.close();
}
}
2.循环语句
while循环语句
while语句也称为条件判断语句,它的循环方式是利用一个条件来控制是否要继续反复执行这个语句,语法如下:
while(条件表达式){
语句序列
}
条件表达式的返回值为true时,则执行语句序列,执行完后重新判断条件表达式的返回值,直到结果为false时,退出循环
例:计算1-1000的相加结果
public class GetSum{
public static void main(String [] args){
int x = 1;
int sum = 0;
while(x <= 1000){ //循环1000次
sum = sum + x;
x++;
}
System.out.println("sum="+sum);
}
}
do...while循环语句
do...while循环语句与while循环语句类似,区别在于while语句是先判断条件是否成立,在选择是否执行循环体,而do...whlie循环语句则是先执行一次循环后,再判断条件是否成立,语法如下:
do{
语句序列
} while(条件表达式);
例:用户登录验证
import java.util.Scanner;
public class LoginService{
public static void main(String [] args){
Scanner sc = new Scanner(System.in); //创建扫描器,获取控制台输入的值
int password; //保存用户输入的密码
do{
System.out.println("请输入6位数字密码"); //输出提示
password = sc.nextlnt(); //将用户在控制台输入的密码记录下来
}whlie(931567 != password); //如果用户输入的密码不是"931567"则继续执行循环
System.out.println("登录成功");
sc.close();
}
}
for循环语句
for循环可以用来重复执行某条语句,知道某个条件得到满足。for循环有两种语句:
第一种:for语句
for(表达式1;表达式2;表达式3){
语句序列
}
表达式1:初始化表达式,负责对变量完成初始化
表达式2:循环条件表达式,指定循环条件
表达式3:每次循环结束后执行的语句,用来改变循环的条件
执行时,首先执行表达式1,下一步判断表达式2的值,若值为true,则进入循环体,在执行完循环体后紧接着计算表达式3,这样一轮循环就结束了,第二轮循环从计算表达式2开始,若返回值为true,则继续执行循环,否则跳出整个for语句
例:计算2-100中所有偶数的和
public class Circulate{
public static void main(String [] args){
int sum = 0;
for(int i = 2;i <= 100;i += 2){
sum = sum + i;
}
System.out.println("2到100之间的所有偶数之和为:"+sum);
}
}
第二种:foreach语句
for(元素类型 x : 遍历对象 obj){
引用了x的java语句;
}
foreach语句是对for语句的简化版本,并不能完全取代for语句,foreach语句中的元素变量x,不必对其进行初始化
例:定义一维数组,并用foreach语句遍历数组
public class Repetion{
public static void main(String [] args){
int arr[] = {5,13,96}; //定义一维数组
System.out.println("一维数组中的元素分别为:");
for(int x : arr){ //x的类型与arr元素的类型相同,for循环依次取出arr中的值并赋给x
System.out.println(x);
}
}
}
3.循环控制
break语句
break语句用于跳出循环体,从而中断当前循环
三种循环语句中使用break的形式如下:
while(...){
...
break;
...
}
do
{
...
break;
...
}while(...);
for
{
...
break;
...
}
例:循环输出1-20的偶数值,在遇到第一个偶数时,结束循环
public class BreakTest{
public static void main(String [] args){
for(int i = 1;i <= 20;i++){
if(i % 2 == 0){
System.out.println(i);
break;
}
}
System.out.println("end");
}
}
continue语句
continue语句是对break语句的补充,continue不是立即跳出循环体,而是跳过本次循环,回到循环的条件测试部分,重新执行循环
三种循环语句使用continue的形式如下:
while(...){
...
continue;
...
}
do
{
...
continue;
...
}while(...);
for
{
...
continue;
...
}
例:for循环从1到20,循环次数为偶数时,跳过本次循环
public class ContinueTest{
public static void main(String [] args){
for(int i = 1;i <= 20;i++){
if(i % 2 == 0){
continue;
}
System.out.println(i);
}
}
}
针对本章内容给大家留一道趣味题,供大家讨论解决一下,参考代码会在下期公布
5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买一只雏鸡,现在用100文钱买100只鸡,那么公鸡、母鸡、雏鸡各有多少只?