【软件创新实验室2021年寒假集训】Java技术培训——Java基础(二)

简介: 【软件创新实验室2021年寒假集训】Java技术培训——Java基础(二)

一、变量、常量、作用域

PS:以下内容摘自java的变量,常量,作用域


1.变量

变量是什么:变量就是可以变化的量


Java是一种强类型语言,每个变量都必须声明其类型。


Java变量是程序中最基本的存储单元,其要素包括变量名(标识符),变量类型(基本数据类型)和作用域


每个变量都有类型,类型可以是基本类型,也可以是引用类型


变量名必须是合法的标识符。


变量声明是一条完整的语句,因此每一个声明都必须以分号结束


2.变量作用域

类变量

实例变量

局部变量

public class Demon08 {
    //类变量  static   丛属于Demon08这个类  跟着这个类一起产生一起消失
    static  double salary = 2500;   salary  工资
    //属性:变量
    //实例变量:从属于对象; 如果不自行初始化,这个类型的默认值为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 Demon08();
        Demon08 demon08= new Demon08();
        System.out.println(demon08.age);
        System.out.println(demon08.name);
        //类变量  static 或者带有static属性的变量
        System.out.println(salary);
    }
    //其它方法
    public void add(){
    }
}


3.常量

① 常量(Constant): 初始化(initialize)后不能再改变值! 不会变动的值。


② 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。


final 常量名 = 值

final double PI = 3.14;

③ 常量名一般使用大写字符


public class Demon09 {
    //final是修饰符,不区分放在前后顺序
    static  final  double PI = 3.14;
    public static void main(String[] args) {
        System.out.println(PI);
    }
}


④ 变量的命名规范


所有变量,方法,类名:要见名如意

类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写

局部变量:首字母小写和驼峰原则

常量:大写字母和下划线:MAX_VALUE

类名:首字母大写和驼峰原则:Man,GoodMan

方法名:首字母小写和驼峰原则:run(),runRun()

PS:思考一下为什么要有这种规范?


PS:以上不必可以去记忆,多去打打代码这些自然就迎刃而解了


二、基本运算符

如果大家学过c,那么理解其这基本运算符基本不难。Java这一套其实也是h和c一样的。


以下是基本运算符概览


优先级 运算符 结合性
1 () [] . 从左到右
2 ! +(正) -(负) ~(非运算) ++ - - 从右向左
3 * / % 从左向右
4 +(加) -(减) 从左向右
5 << >>(算数右移) >>>(逻辑右移) 从左向右
6 < <= > >= instanceof 从左向右
7 == != 从左向右
8 &(按位与) 从左向右
9 ^(异或) 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 = , += , -= ,*= , /= ,%= ,&=, |=, ^=, ~= ,<<= ,>>=, >>>= 从右向左

1.算数运算符

单目:+(取正)-(取负) ++(自增1) - -(自减1)

双目:+ - * / %(取余)

三目:a>b?true:false


注意点:


+,-,*,/是Java最基本的运算符号,直接运用即可(在Java中两个整数相除的出的仍为整数!)

++a,- -a,代表这个变量先加一后参加运算

a++,a- -代表这个变量先参加运算后加一。

+a,-a则代表这个变量的正负

%代表取模运算,取两个数相除后的余数。

三目运算符:a>b?true:false

2.关系运算符

等于符号:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号:<= 。


注意点:


>,<为比较两个变量大小的运算符(无限制要求,运算优先级要小于算数运算符)

>=,<=大于等于小于等于一定要有顺序。(无其余限制)

(以上运算符都只能进行一个公式的运算,不能同时进行两个或者多个!)

=代表了给一个变量赋值,不能用做等号,只有==才是等号!!

!=代表不等与的意思,无具体限制要求。

3.位运算符

与(&)、非(!)、或(|)、异或(^)


&:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000

| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110

! :0变1,1变0

^ :两边的位不同时,结果为1,否则为0.如1100^1010=0110

4.逻辑运算符

短路与(&&)、非(!)、短路或(||)


!非:进行判断时将正确错误交换。

&& 短路与:只有两个运算都为真时才能是真,进行运算时只要第一个运算出错就不会进行接下来的运算直接flase。

|| 短路或:只有两个运算都为假时才为假,进行运算时只要第一个运算正确就不会进行接下来的运算直接true。

5.其他

instanceof

该运算符是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算符运算结果是true,否则是false。

位移

<< 带符号左移 >>带符号右移 >>> 无号右移

三、流程控制

以下内容多摘自Java入门篇(三)——Java流程控制一文


1.条件语句

①简单if语句

使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”,如果该表达式返回true,则执行其后的语句;若为false,则不执行if后的语句。可分为简单的if条件语句、if···else语句和if···else if多分支语句。


int a = 100;
if(a == 100) {
    System.out.println(a);
}

②if-else语句

if···else语句是条件语句中最常用的一种形式,它会针对某种条件有选择的作出处理。通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。


if后的()内的表达式必须是boolean型的。如果为true,则执行if后的复合语句;如果为false,则执行else后的复合语句。


如:


public class Getifelse {
    public static void main(String[] args) {
        int math = 80;        // 声明,数学成绩为80(及格)
        int english = 50;    // 声明,英语成绩为50(不及格)
        if(math >= 60) {    // if判断语句判断math是否大于等于60
            System.out.println("math has passed");
        } else {            // if条件不成立
            System.out.println("math has not passed");
        }
        if(english >= 60) {    // if判断语句判断english是否大于等于60
            System.out.println("english has passed");
        } else {            // if条件不成立
            System.out.println("english has not passed");
        }
    }
}



③3. if···else if多分支语句

if···else if多分支语句用于针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件”,就进行某种处理,否则,如果满足另一种条件,则进行另一种处理。


如:


public class GetTerm {
    public static void main(String[] args) {
        int x = 40;
        if(x > 60) {
            System.out.println("x的值大于60");
        } else if (x > 30) {
            System.out.println("x的值大于30但小于60");
        } else if (x > 0) {
            System.out.println("x的值大于0但小于30");
        } else {
            System.out.println("x的值小于等于0");
        }
    }
}


④ switch多分支语句

switch语句是一种比较简单明了的多选一的选择,在Java语言中,可以用switch语句将动作组织起来进行多选一。语法格式如下:


switch(表达式)
{ 
 case 常量值1:
        语句块1
        [break;]
...
case 常量值n:
        语句块2
        [break;]
default:
        语句块 n+1;
        [break;]
}

switch语句中表达式的值必须是整型或字符型,常量值1~n必须也是整型或字符型。


简单说一下switch语句是怎么执行的(重点,初学的朋友要注意)。首先switch语句先计算表达式的值,如果表达式的值与case后的常量值相同,则执行该case后的若干个语句,直到遇到break语句为止。如果没有break,则继续执行下一case中的若干语句,直到遇到break为止。若没有一个常量的值与表达式的值相同,则执行default后面的语句。default语句可选,如果不存在default语句,而且switch语句中的表达式的值与任何case的常量值都不相同,则switch不做任何处理。并且,同一个switch语句,case的常量值必须互不相同。


注:判断条件必须是int、short、char、byte和enum类型(JDK 1.7 之后,类型也可以是String了)


2.循环语句

循环语句就是在满足一定条件的情况下反复执行某一个操作。包括while循环语句、do···while循环语句和for循环语句。


①while循环语句

while循环语句的循环方式为利用一个条件来控制是否要继续反复执行这个语句。


假设现在有1~10十个数字,我们要将它们相加求和,在学习while之前可能会直接用+运算符从1加到10,也就是1+2+3+4+5+6+7+8+9+10,但如果现在需要从1加到1万呢?10万?所以,我们要引入while循环来进行循环相加,如下:


public class GetSum {
    public static void main(String[] args) {
        int x = 1;            // 定义初值
        int sum = 0;        // 定义求和变量,用于存储相加后的结果
        while(x <= 10) {
            sum += x;        // 循环相加,也即    sum = sum + x;
            x++;
        }
        System.out.println(sum);
    }
}

②do···while循环语句

do···while循环语句与while循环语句的区别是,while循环语句先判断条件是否成立再执行循环体,而do···while循环语句则先执行一次循环后,再判断条件是否成立。也即do···while至少执行一次。语法格式如下:


do
{
    执行语句
}  while (条件表达式);

③ for循环语句

for循环语句是Java程序设计中最有用的循环语句之一。

PS:所有循环语句都可以用for循环来解决


一个for循环可以用来重复执行某条语句,知道某个条件得到满足。语法格式如下:


for(表达式1; 表达式2; 表达式3)
{
    语句序列
}


其中,表达式1为初始化表达式,负责完成变量的初始化;表达式2为循环条件表达式,指定循环条件;表达式3为循环后操作表达式,负责修整变量,改变循环条件。三个表达式间用分号隔开


④增强for循环

增强for循环也叫for-each循环,

它是Java5后新增的for语句的特殊简化版本,并不能完全替代for语句,但所有foreach语句都可以改写为for语句。foreach语句在遍历数组等时为程序员提供了很大的方便。语法格式如下:


for(元素变量x : 遍历对象obj) {
    引用了x的Java语句;
}

举个简单的例子:


int array[] = {7, 8, 9};
for (int arr : array) {
     System.out.println(arr);
}


不只是数组,其实集合类(jdk类库中的类,以后会学到)都能使用foreach循环来遍历所有元素,其原理就是这些类实现了Iterable接口,内部遍历就是去调用迭代器(了解即可,以后深入学习会明白的)


3.跳转语句

Java语言提供了三种跳转语句,分别是break语句、continue语句和return语句。


①break语句

break语句刚刚在switch中已经见过了,是用来中止case的。实际上break语句在for、while、do···while循环语句中,用于强行退出当前循环,为什么说是当前循环呢,因为break只能跳出离它最近的那个循环的循环体,假设有两个循环嵌套使用,break用在内层循环下,则break只能跳出内层循环,如下:


for(int i=0; i<n; i++) {    // 外层循环
    for(int j=0; j<n ;j++) {    // 内层循环
        break;
    }
}


②continue语句

continue语句只能用于for、while、do···while循环语句中,用于让程序直接跳过其后面的语句,进行下一次循环。


例:输出10以内的所有奇数


public class ContinueDemo {
    public static void main(String[] args) {
        int i = 0;
        while(i < 10) {
            i++;
            if(i%2 == 0) {    // 能被2整除,是偶数
                continue;    // 跳过当前循环
            }
            System.out.print(i + " ");
        }
    }
}


这里if条件判断是否为偶数,如果是偶数则执行continue,直接跳出本次循环,不进行continue后的步骤(即不执行输出语句),然后下一次循环为奇数,输出i,运行结果如下:


q1.png

③ return语句

return语句可以从一个方法返回,并把控制权交给调用它的语句。


public void getName() {
    return name;
}


例如上方代码,这是一个方法用于获取姓名,当调用这个方法时将返回姓名值。


相关文章
|
23天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
24天前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
38 1
|
1月前
|
SQL 监控 Java
技术前沿:Java连接池技术的最新发展与应用
本文探讨了Java连接池技术的最新发展与应用,包括高性能与低延迟、智能化管理和监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,为开发者提供了一份详尽的技术指南。
32 7
|
1月前
|
移动开发 前端开发 Java
过时的Java技术盘点:避免在这些领域浪费时间
【10月更文挑战第14天】 在快速发展的Java生态系统中,新技术层出不穷,而一些旧技术则逐渐被淘汰。对于Java开发者来说,了解哪些技术已经过时是至关重要的,这可以帮助他们避免在这些领域浪费时间,并将精力集中在更有前景的技术上。本文将盘点一些已经或即将被淘汰的Java技术,为开发者提供指导。
75 7
|
29天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
45 3
|
29天前
|
SQL 监控 Java
Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面
本文探讨了Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,以实现高效稳定的数据库访问。示例代码展示了如何使用HikariCP连接池。
15 2
|
1月前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
29 4
|
29天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
28 1
|
29天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
42 1
|
1月前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
51 2