零基础学Java语言

前言

  本文是对以前关于《零基础学Java语言(翁恺)》的学习笔记的整理。主要是作为云笔记备份,方便偶尔的查阅。


第1章 计算

1.1 计算机与编程语言

  计算机能懂的是二进制的东西,也会用其他进制表示,如16进制:0~15的数{0,1,…,9,A,B,C,D,E,F}。
  把所有计算机做的事情都叫做计算,包括:加减乘除的算术运算、画图、放电影等。计算的步骤就是算法。计算机的思维方式和人不同的,解题时人会思考用各种方法,而计算机只能根据预设的方法,且更多的时候是枚举尝试。

  人写的程序算法和计算机懂的二进制语言、数字间有差异,计算机执行人写的程序有两种方案(或程序执行的两种方式):
1) 解释:借助一个程序,那个程序能试图理解你的程序,然后按照你的要求执行,即解释是直接执行人的程序;
2) 编译:借助另一类程序,就像一个翻译,把你的程序翻译成计算机真正能懂的语言(机器语言)写的程序,然后这个机器语言写的程序就能直接执行,即编译是把人的程序得到机器语言。

  总的来说,在比较解释语言与编译语言时,“某种语言是解释(或编译)执行的语言”是一种误解,语言本身无编译/解释之分,任何一种语言既可以解释执行也可以编译执行,只是传统和习惯的问题,只是某种语言常用的执行方式是解释或编译执行,比如C语言是编译型的语言,一般C语言程序写出来后需要编译再运行,但也有C语言的解释器;一般认为python语言是解释型的语言,不需要编译就可以拿源代码就执行,但也可以做它的编译器。

  解释型语言有特殊的计算能力。过去认为解释型语言运行较慢,因为不是直接运行,现在发现二者的运行效率已经不是重要的问题,因为计算机的速度已经到了一个比较高的层次上。编译型语言有确定的运算性能。目前来说这两种执行方式已经没有非常大的本质上的区别,更多的是传统和喜好上的问题。

  具体来说,二者有如下说明和比较:
在这里插入图片描述
  一般来说,编译型语言的运行效率比解释型语言更高;但是不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能使解释型语言的型能超过编译型语言;编译型语言的跨平台特型比解释型语言差一些。

  从某种角度来说,Java语言应是编译型-解释型语言,因为其同时具备编译型和解释型两种特型;Java文件先编译成与平台无关的.class的字节码文件,然后.class的字节码文件既可以在Windows平台上的Java虚拟机(JVM)上进行解释运行,也可以在Linux平台上的JVM上解释运行;而JVM的翻译过程时解释型的,JVM从.class的字节码文件中读出一条指令,翻译一条指令,然后执行一条指令,这个过程就称为Java的解释执行。
在这里插入图片描述
在这里插入图片描述

Tips:“Alt+/”让eclipse根据输入的部分字母联想相关语法。

1.2 变量与计算

  程序可以理解为:输入并记录,加以计算,然后输出的过程。
  读输入:构建一个Scanner的对象,然后让它来做各种形式的读的动作。很常用的一个读输入的语句:Scanner in = new Scanner(System.in);
  语句区分大小写。“Shift+↑或↓”多行选中,“ctrl+/”注释和取消注释。
  Console控制台运行结束会显示“terminated”,多次点运行会出现多控制台占用资源可能导致死机。
  变量:<类型名称>+<变量名称>+ < ; > 如:int price, amount;
  变量的名字是一种“标识符”,只能由字母、数字、下划线组成,数字不可以出现在首位,Java的关键字/保留字不可以做标识符。Java中的保留字如下:
在这里插入图片描述
:abstract抽象修饰符;JAVA中一共有八种基本数据类型,分别是byte、short、int、long、float、double、char、boolean。

八种基本数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  int price = 0; 定义了一个变量,名字是price,类型是int,初始值是0。
  int price, amount = 0; 表示定义了2个int型变量price和amount,且amount初始化为0,但注意price没有初始化。

  Java是一种强类型语言,所有的变量在使用前必须定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行中也不能改变变量类型。
赋值:price = in.nextInt();
计算机中“=”表示将右侧赋值给左侧,而不是数学意义的相等。

  变量的第一次赋值称为“初始化”,没有initialized的变量不能够输出。
一行可以定义和初始化多个变量,但一行定义一个更便于以后的维护和阅读。
  初始化后不再变化的变量可以使用类型“常量”final,初始化后的常量也不能再接受赋值,不直接使用数据是为了便于以后的阅读和维护,如
final int amount = 100;

1.3 浮点数计算

  在计算机里,处理不带小数点的整数和带小数点的数,是差别非常大的事情,需要的计算时间和资源是不同的。带有小数点的数,计算机中用浮点数来表示。
  Java中两个整型的数运算的结果只能是整型,且是抹去小数部分的整数。
  10和10.0是完全不同的数,10.0是浮点数,10是整数。
  只要一个运算符的两边有至少一个是浮点数,则结果是浮点数,整型会转换为浮点数进行运算。
  浮点数的存储方式往往会带来误差,整数的计算可以避免误差,且整数的运算速度比浮点数快。

  下表为运算符的优先级:
在这里插入图片描述
注:
1.以单目取负为例,单目指只对一个变量的运算符,单目取负相当于(-a)。结合关系(相同优先级)一般是自左向右运算,但单目运算的“±”和赋值“=”是自右向左。
2.表中除最后的字符串连接和赋值运算符外其余均是算术运算符。

  • 强制转换(int)、(double)等可以看成是一种单目运算符号:
  • (int)a表示由a转换得到一个整型数,但不会改变a本身的性质和数值;
  • (int)a/b表示由a转换得到的整型数(int)a,再除以b;
  • (int)(a/b)表示由a/b转换得到的整型数。

  输入输出代码示例:
在这里插入图片描述

第2章 判断

  不想复制粘贴了,后面决定直接把以前的笔记截图了……

2.1 比较

在这里插入图片描述

2.2 判断

在这里插入图片描述

2.3 分支

在这里插入图片描述
在这里插入图片描述

第3章 循环

3.1 循环

在这里插入图片描述
在这里插入图片描述

3.2 示例

1) 计数循环
  关注的问题:1循环的次数;2循环结束时的输出。
在这里插入图片描述
  判断循环次数时,可以通过验证较小的循环次数来判断较大的循环次数,一般都是count或count±1。

2) 算非负数的平均数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3) 猜数游戏
在这里插入图片描述
4) 整数分解
  即得到各个位数上的数,如365得到3、6、5,得到总位数3,得到563等。
  对一个数n对10取余得到个位数,对n对10整除可以把个位部分去掉,因此重复这两个步骤即可得到每个位数。
  同样的,如果想得到倒序的数,两种方案,一种是直接每次循环后不换行继续打印;第二种是上次循环的个位乘10加上此次循环的个位数,这样循环累加下去。
  1. 正序分解一个整数,如365分解为:3换行6换行5
在这里插入图片描述
  2. 逆序输出一个整数:365得到563
在这里插入图片描述
  3. 计算整数的模mode:n位数的模为〖10〗^(n-1),如1234的mode是1000:
在这里插入图片描述

第4章 循环控制

4.1 For循环

在这里插入图片描述
在这里插入图片描述

4.2 循环控制

  break可跳出三种循环、switch case。
  continue跳出循环这一轮剩下的语句,进入下一轮的循环。
  break vs continue:
在这里插入图片描述
  break和continue默认只能跳出所在的那一重循环,当有多重循环时,可以用接力break实现。
在这里插入图片描述
  也可以在多重循环前加入一个自定义的名字并加上“:”,这个名字就称为一个标号,代表后面的多重循环,然后break+“标号”跳出该多重循环。
  即在循环前可以放一个标号来表示循环:“label:”,用带标号的break和continue对那个循环起作用。
  goto不推荐初学者使用。
  在逻辑判断时,只需用到0、1两个值,可以换成Boolean类型,值变为“true\false”。
  由2.1节可知,关系运算(>,<,≥,≤,==,!=)的结果是一个逻辑值(true/false)。
  逻辑运算是对逻辑值的运算,即只有true和false的Boolean类型变量可以参与运算。
在这里插入图片描述

4.3 循环示例

在这里插入图片描述
在这里插入图片描述

第5章 数组

5.1 数组

  数据可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间。如果我们需要保存一些相同类型、相似含义、相同生存空间的数据,我们可以用数组Array来保存这些数据,而不是用很多个独立的变量。数组是长度固定的数据结构,用来存放指定的类型的数据。数组中的每个数据称为元素。
  数组可以看成是一种容器,具有两个突出的特点:
  1 数组里的所有数据的类型都是相同的,是预先指定的。
  2一旦创建数组后,不能再改变数组的大小,但元素个数可以是变量,随每次程序的运行而改变。

  计算输入的多个数(以-1结尾)的平均数,并给出大于平均数的数:
在这里插入图片描述
  上述代码存在隐患:数组越界,数组指定大小是100,但输入数据可以超越100个。可修改为先输入需要计算的总数个数:
在这里插入图片描述
  数组变量格式:<类型>[]<名字> = new <类型>[元素个数];
“=”是初始化,上式数组的初始化时会自动初始化为{0,0,…,0};new可以理解为创建,也出现在Scanner in = new Scanner(System.in)。
int[]grades = new int[100]; double[]averages = new double[10];
在这里插入图片描述
在这里插入图片描述

5.2 数组计算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3 二维数组

在这里插入图片描述

第6章 使用对象

在这里插入图片描述
在这里插入图片描述

6.2 包裹类型

  对于基本数据类型,Java提供了对应的包裹(wrap)类型。
在这里插入图片描述

6.3 字符串

  双引号括起来的0个或多个字符就是一个字符串字面量。
  字符串变量 String s;,可以与基础类型不同的是,String第一个字母大写,就像前面包裹类型的首字母大写一样,这表明字符串类型不是一个基础类型,而是系统内部的一个类。
  字符串变量和数组变量类似,它并不存放字符串,不是字符串的所有者,它是字符串的管理者。
  所以我们用new来创建一个字符串,然后把字符串交给字符串变量来管理。如
String s = new String(“hello”);可做如下拆解:
  new String创建一个String的对象(这里的对象就是字符串);new String(“hello”)用  “hello”初始化这个对象;String s创建管理这个对象的字符串变量s;=表示将对象交给变量s来管理。
在这里插入图片描述
在这里插入图片描述

第7章 函数

7.1 函数的定义与调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2 函数参数与函数内的变量

  如果函数有参数,则需要传递给它数量、类型正确的值,可以传递给函数的值包括:字面量,变量,函数的返回值,计算的结果。
  当传递的值和参数需要的类型不匹配时,视类型的包含关系决定:当函数期望的参数类型比调用参数时给的值类型宽的时候,编译器可以自动把给的值转换成函数要求的参数类型,如输出char→int→double。boolean和int不能转换,即没有true对应0或1的关系。
  反之,当函数期望的参数类型比调用参数时给的值类型窄的时候,需要做强制类型转换。当类型间无法转换时,则不能调用函数。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值