华清远见重庆中心—JAVA基础阶段技术总结/个人总结

一.学习java前需要了解的

初步认识

  在第一周的学习中,我初步对JavaSE有了一些了解,首先是其发展历史,java的前身是Oak语言(翻译为橡树),是由1990年Sun公司的James Gosling领导设计而成,初期是为了实现智能设备,但并未发展成果,但这门语言留了下来,并经过改造,成为了现在的java语言,1995年,java正式由SUN公司发布,推出了java1.0以及开发工具包JDK1.0。值得一提的是,java名字起源于印度的爪哇岛(英语翻译就是java),java的官网图标是冒热气的咖啡。

java分类

java有几个分类

  • JavaME java微型版 如今基本已经淘汰
  • JavaSE java标准版 基础核心
  • JavaEE java企业版 开发WEB项目(流行的重要原因)

其中JavaSE,是java的核心和基础,也是JavaME和JavaEE的核心,可以用于开发桌面端程序,如IDEA。

Java流行的原因

一个东西的流行肯定是因为其具有某些优质的特性,以下是来自百度百科的java语言介绍,点击此处查看更多。
  Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
  Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性(跨平台)、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
  在第一周里,有了解到java具有一处编译,处处执行的特点,这基于java的一个核心“JVM(Java Virtual Machine——java虚拟机)”。说到这个补充一下:java运行过程:首先编程人员会编写java代码,并将java代码保存到一个".java"源文件里,将源文件经过编译后,会生成".class"的字节码文件,然后由JVM解释字节码文件。如下图1

java运行过程


二.技术总结

经过第一周的学习,收纳了以下自认为比较重要的方法、知识点等。

1.数据类型

原始类型

  • 整型 byte short int long
  • 浮点型 float double
  • 字符型 char 注意ASCII字符代表码

引用类型

  • 接口
  • 数组

注意:数据类型这个知识点着重需要注意的是各数据占用内存的大小、定义数据类型(注意float、 long),以及数据类型之间的转换。例如:

隐式类型转换(自动类型转换)

  占用字节小的数据类型的变量,可以直接保存到占用字节大的数据类型的变量中

short s = 123
int i = s;
//s是short类型,占2个字节,i是int类型,占4个字节

显式类型转换(强制类型转换)

  占用字节大的数据类型的变量,默认无法保存到占用字节小的数据类型的变量中,如果要强制保存,需要经过类型转换。

语法:(目标类型)待转化的变量

int num = 123
// byte b = num;//直接无法赋值
byte b = (byte)num;//强制转换为byte类型
//如果待转换的变量中的数据能正常保存到转换的目标变量中,结果无误。
//如果超出目标变量的范围,会造成数据溢出
byte n = (byte)128;//byte最大值为127,强制将128赋值给byte时,真正保存的是byte的最小值-128

2.运算符

重点:
逻辑运算符

符号作用说明
&&and与符号两端需要两个表达式,判断如果都为true,整体结果为true,如果有一端结果为false,则整体结果为false。
||or或符号两端需要两个表达式,判断如果都为false,整体结果为false,如果有一端结果为true,整体结果为true。
not非是一个单目运算符(只有一个表达式),“!表达式”:表示对原表达式的结果取相反值。

位运算符

符号作用
&按位与:计算的结果与&&相同,但过程不同。符号两端的表达式都会执行判断。
|按位或:计算的结果与||相同,但过程不同。符号两端的表达式都会执行判断。
^按位异或:将操作数转换为二进制后,按位比较,如果相同结果为0,不同结果为1,最终二进制结果转换为十进制。
>>按位右移:将第一个操作数转换为二进制后,向右移动第二个操作数对应的位数,再将结果转换为十进制
<<按位左移:将第一个操作数转换为二进制后,在后边补充第二个操作数对应数量的0,再将结果转换为十进制。

示例代码:

System.out.println(2^3);
//^按位异或符号
//2 010
//3 011
// 异或就是两个一样就用0表示,不一样就是1
//1 001

//6 110 向右移动一位  //011-->3
System.out.println(6>>1);//3

//将第一个操作数转换为二进制后,在后边补充第二个操作数对应数量的0,再将结果转换为十进制。
//5 101 //1010-->20
System.out.println(5<<1);//10


条件运算符
  三目运算符,有三个操作数参与,是一个简化版的双分支条件语句。

表达式1?表达式2:表达式3

  首先运算表达式1,如果结果为true,执行问号后的表达式2;如果结果为false,执行问号后的表达式3;整个表达式的最终结果为表达式2或表达式3.

Scanner sc = new Scanner(System.in);
System.out.print("请输入年份");
int year = sc.nextInt();
String res = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? "是闰年" : "不是闰年";
System.out.println(year + res);

顺序解读2
在这里插入图片描述

注意:

  • 运算后,最终数据类型为运算语句中所占字符最大的数据类型。
  • &&和||也称为短路运算符。如果能通过第一个表达式确定最终的结果,则不用判断第二个表达式。
  • 通常情况下,使用&&和||提高代码执行效率
  • 运算符优先级:小括号>>单目运算符(!、++、–)>>算术运算符>>关系运算符>>逻辑运算符>>条件运算符>>赋值/复合赋值运算符

3.条件语句

if 语句

  • 单分支if语句
      如果一件事满足则执行,不满足什么都不执行。
if (判断条件){ //判断条件结果为布尔值
    条件满足时执行的代码
}
  • 双分支if语句
if (判断条件){
    条件满足时执行的代码
}else{
    条件不满足时另外执行的代码
}
  • 多分支if语句
if (判断条件1){
    条件1满足时执行
}else if(判断条件2){
    条件2满足时执行
}else if(判断条件3){
    条件3满足时执行
}else{
    如果所有条件都不满足时执行
}

多分支if语句判断流程图一个具有注脚的文本 3

多分支if语句判断流程
switch语句
  开关语句,如果一个变量的值能够例举出来时,使用switch语句更为简洁。

switch(变量){//要判断的变量,只能是非long整型、字符型char和字符串String和枚举类型
    case:
        //如果变量的值与当前case的值匹配,执行这里的代码
        break;
    case:
        //如果变量的值与当前case的值匹配,执行这里的代码
        break;
    ...    
    default:
        //如果没有任何值与变量的值匹配,执行这里的代码
        break;
}

使用注意事项

  • switch小括号中的变量只能是非long的整型、字符型char、字符串String和枚举类型

  • 小括号中的变量类型要与case后的值的类型相匹配

  • 如果有某个case后的内容和变量值匹配,执行case后的代码,如果没有任何case匹配,执行default后的代码

  • break和default可以省略。如果不写break,在某个case匹配时,执行玩相应的代码后继续执行后续case后的代码,直到遇到break或没有代码为止

  • 如果多个case后执行的内容一致,可以省略break,将统一要做的代码放在最后的case后

补充: switch和if语句都还能和return关键字搭配哦,用于不再执行后续的代码,特别提醒,switch使用return后就会停下main主函数了,所以一般switch不会搭配return。

4.循环(用于需要重复执行的代码)

  • while 循环
/*
while(循环条件){
	满足循环条件时重复执行的代码
}*/
//简单例子
int i = 0;
while (i<3){
    System.out.println("这是第"+(i+1)+"行文字");
    i++;
}
  • do-while 循环
do{
    满足循环条件时重复执行的代码
}while(循环条件);

do-while循环至少执行一次

  • for 循环
//表达式1为定义循环变量
//表达式2为判断循环条件
//表达式3为更新循环变量
/*for(表达式1;表达式2;表达式3){
    循环体
}*/
//打印1-10
for (int i=1;i<=10;i++){
            System.out.println(i);
        }

执行流程

  首先执行表达式1,再执行表达式2,如果表达式2的结果为true,执行循环体,再执行表达式3,再执行表达式2判断,如果表达式2的结果为false,结束循环。这里的表达式2,循环体,表达式3是一个循环,直到表达式2为false才结束循环。

增强for循环
  用于遍历数组或集合元素的循环,例如:

/*
for (数据类型 变量名:数组名){}
*/
String[] nameList = {"张三","李四","王五","赵六"}
for (String name : nameList){
	System.out.print(name+"\t")
}

5.循环控制

break和return

  • 所有的循环都可以使用break退出整个循环
  • break是停止循环后,继续执行循环之外的内容
  • return是结束方法,不再执行return之后的内容。
public class BreakAndContinue {
    public static void main(String[] args) {
        int i = 1;
        while (true){
            System.out.println("xxxxx");
            if (i++ == 10){
                break;//退出整个循环,程序继续执行循环之外的内容
                //return;//退出整个main方法,程序不再执行之后的代码
            }
        }
        System.out.println("结束");//如果循环中有return,不会执行这句话
    }
}

continue

在循环语句中,可以使用continue,停止本次循环,不再执行continue之后的代码,直接进行下次循环。

int i = 1;
        while (i<10){
            if (i++ % 2 == 0){
                //例如i=1,则1%2==0条件不满足,所以打印i(1+1)
                continue;//如果遇到continue,结束本次循环(不再执行continue之后的代码),直接进入下一次循环
            }
            System.out.println(i);
        }

6.循环总结

  • 如果已知循环次数,建议用for循环。如遍历数组、集合等。
  • 如果未知循环次数,推荐使用while循环。
  • while循环和for循环可以互相转换。
  • while循环可能一次都不执行,do-while循环至少循环一次。
  • 循环可以进行嵌套,循环里有循环,但尽量不要嵌套太多循环,占用资源很多。

关于循环的例题有很多,例如:
龟兔同笼问题

//鸡兔同笼  笼子里有若干鸡和兔,头一共35,腿一共94,鸡兔各几只?
        for (int ji=0;ji<=35;ji++){
            for (int tu=0;tu<=35;tu++){
                if (ji+tu==35&&2*ji+4*tu==94){
                    System.out.println("鸡"+ji+"只,兔子"+tu+"只");
                }
            }
        }

打印九九乘法表

  for (int i=1;i<10;i++){
            for (int j=1;j<=i;j++){
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println();
        }

打印菱形
以下代码将菱形分成上下两个三角形打印的

for (int i=1;i<=6;i++){
            for (int x=6;x>=i;x--) {
                System.out.print(" ");
            }
            for (int x=6;x<=i+5;x++){
                System.out.print(" *");
            }
            System.out.println();
        }
        for (int i=1;i<=6;i++){
            for (int x=6;x<=i+5;x++){
                System.out.print(" ");
            }
            for (int x=6;x>=i;x--) {
                System.out.print(" *");
            }
            System.out.println();

        }

7.数组

  有关这部分,只要知道怎么定义、赋值数组,数组初始化、读取数组元素(for循环/增强for循环)就OK了。

  另外这里附上一个Arrays这个工具类的方法列表(静态的,直接调用)

常用方法作业
sort(数组)将输入中的元素升序排序
sort(数组,起始位置,结束位置)对数组中[起始位置,结束位置)区间的元素升序排序
fill(数组,值)使用指定值对数组中的所有元素进行填充
fill(数组,起始位置,结束位置,值)使用指定值对数组中[起始位置,结束位置)区间的元素进行填充。
copyOf(数组,新数组长度)复制数组并指定复制后的数组的长度。得到复制后的新数组。
asList(一组数据)将一组数据转换为list集合
equals(数组1,数组2)判断两个数是否相同,得到判断的布尔值,只有两个数组一模一样时得到true。

  1. 图片来源于网络 ↩︎

  2. 图片来源于个人老师课堂笔记截屏 ↩︎

  3. 图片来源于网络 ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值