public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
类(class):上面程序定义了一个类HelloWorld,该类的名字与.java文件的名字相同。
方法(method):类的内部定义了该类的一个方法main。
语句(statement):真正的“打印”功能由一个语句实现,即: System.out.println("Hello World!");
下面两点有关Java的书写方式:
Java中的语句要以;结尾 (与C/C++相同)。
用花括号{}来整合语句,形成程序块。通过程序块,我们可以知道程序的不同部分的范围,比如类从哪里开始,到哪里结束
Java程序要经过编译器编译才能执行。在Linux或Mac下,可以下载安装Java JDK。
使用javac来编译。在命令行中输入下面语句编译:
javac HelloWorld.java
当前路径下,将有一个名为HelloWorld.class的文件生成。
使用java命令来运行。Java会搜寻该类中的main方法,并执行。
java HelloWorld
java内容:
一、变量和常量
二、运算符
三、流程控制语句
四、数组
五、方法
Java中有数组(array)。数组包含相同类型的多个数据。我用下面方法来声明一个整数数组:
int[] a;
变量(variable)占据一定的内存空间。不同类型的变量占据不同的大小。
Java中的变量类型如下:
存储大小 例值 注释
byte 1byte 3 字节
int 4bytes 3 整数
short 2bytes 3 短整数
long 8bytes 3 长整数
float 4bytes 1.2 单精度浮点数
double 8bytes 1.2 双精度浮点数
char 2bytes 'a' 字符
boolean 1bit true 布尔值
在Java中,变量需要先声明(declare)才能使用。在声明中,我说明变量的类型,
赋予变量以特别名字,以便在后面的程序中调用它。你可以在程序中的任意位置
声明变量。 比如:
复制代码
public class Test
{
public static void main(String[] args)
{
System.out.println("Declare in the middle:");
int a;
a = 5;
System.out.println(a); // print an integer
}
}
复制代码
上面a是变量名。可以在声明变量的同时,给变量赋值,比如 int a = 5;
*** “变量”的概念实际上来自于面向过程的编程语言。在Java中,所谓的变量实际上是“基本类型” (premitive type)。我们将在类的讲解中更多深入。
上面的程序还可以看到,Java中,可用//引领注释。
上面的5 + 1也是一个表达式,等于6。
数学表达式
数学运算,结果为一个数值
1 + 2 加法
4 - 3.4 减法
7 * 1.5 乘法
3.5 / 7 除法
7 % 2 求余数
关系表达式
判断表达式是否成立。即一个boolean值,真假
a > 4.2 大于
3.4 >= b 大于等于
1.5 < 9 小于
6 <= 1 小于等于
2 == 2 等于
2 != 2 不等于
布林表达式
两个boolean值的与、或、非的逻辑关系
true && false and
(3 > 1) || (2 == 1) or
!true not
位运算
对整数的二进制形式逐位进行逻辑运算,得到一个整数
& and
| or
^ xor
~ not
5 << 3 0b101 left shift 3 bits
6 >> 1 0b110 right shift 1 bit
还有下列在C中常见的运算符,我会在用到的时候进一步解释:
m++ 变量m加1
n-- 变量n减1
condition ? x1 : x2 condition为一个boolean值。根据condition,取x1或x2的值
表达式
表达式是变量、常量和运算符的组合,它表示一个数据。1 + 1是常见的表达式
再比如:
public class Test
{
public static void main(String[] args)
{
System.out.println("Declare in the middle:");
int a;
a = 5 + 1;
System.out.println(a); // print an integer
}
}
常用的运算符
3-1什么是运算符
运算符是一种“功能”符号,用以通知 Java 进行相关的运算,譬如,我们需要将变量 age 的值设置为 20 ,这时候就需要一个“=”,告诉程序需要进行赋值操作。
Java 语言中常用的运算符可分为如下几种:
算术运算符
赋值运算符
比较运算符
逻辑运算符
条件运算符
特殊运算符
+=:c+=a等价于c=c+a -=:c-=a等价于c=c-a
*=:c*=a等价于c=c*a /=:c/=a等价于c=c/a
%=:模等于 c%=a等价于c=c%a
条件运算符
--例
在编辑器中的第 4 行输入代码,应用关系运算符实现 “判断:如果 score 大于或等于 60 ,输出及格,反之输出不及格“运行结果为: 考试成绩如何:及格
public class HelloWorld{
public static void main(String[] args) {
int score=68;
String mark = (score>=60)? "及格" : "不及格";
System.out.println("考试成绩如何:"+mark);
}
}
条件语句if
if(条件){
条件成立时执行的代码
}
int score=92
if(score>90){
System.out.println("奖励一个IPHONE 5S");
}
练习:
请在编辑器空白处补全代码,实现功能
“判断变量 one 的值是否是偶数”
运行结果为: one是偶数。
public class HelloWorld {
public static void main(String[] args) {
int one = 20 ;
if(one%2=0){
System.out.println("one是偶数");
}
}
}
条件语句if...esle
if(条件的布尔表达式){
代码块1
}
else{
代码块2
}
int score=85;
if(score>90){
System.out.println("奖励一个IPHONE 5S");
}
else{
System.out.println("罚做500个俯卧撑");
}
条件语句多重if
if(条件1){
代码块1
}
else if(条件2){
代码块2
}
else{
代码块3
}
int score=85;
if(score>90){
System.out.println("奖励一个IPHONE 5S");
}else if(score>70){
System.out.println("奖励一个红米");
}else{
System.out.println("罚做500个俯卧撑");
}
练习:
请在编辑器中应用多重 if 语句,补全代码实现如下功能:
假设年龄大于 60 岁,则提示“老年”;如果年龄介于 40 岁至 60 岁之间,则提示“中年”;如果年龄介于 18 岁至 40 岁之间,则提示“少年”;18 岁以下则提示“童年” 运行结果为: 少年
public class HelloWorld {
public static void main(String[] args) {
int age=25;
if(age>60){
System.out.println("老年");
else if(age>=40){
System.out.println("中年");
else if(age>=18){
System.out.println("少年");
else(age<18){
System.out.println("童年");
}
}
}
}
}
}
条件语句嵌套if
if(条件1){
if(条件2){
代码块1
}else{
代码块2
}
}else{
代码块3
}
练习:
请在代码编辑器中补全代码实现赛程设置:预赛成绩大于 80 分的可进入决赛,然后根据性别再划分为男子组决赛和女子组决赛。运行结果为: 进入女子组决赛
public class HelloWorld {
public static void main(String[] args) {
int score = 94;
String sex = "女";
if(score>80){
if(sex="女"){
System.out.println("进入女子组决赛");
}else{
System.out.println("进入男子组决赛");
}
}else{
System.out.println("淘汰")
}
}
}
条件语句switch
当需要对选项进行等值判断时,使用 switch 语句更加简洁明了。
例如:根据考试的名次,给予前 4 名不同的奖品。第一名,奖励笔记本一台;第二名,奖励 IPAD 2 一个;第三名,奖励移动电源一个;最后一名奖励 U 盘一个。
语法:
switch(表达式){
case值1:
执行代码块1
break;
case值2:
执行代码块2
break;
case值n:
执行代码块n
break;
default:
默认执行的代码
}
注意:
1、 switch 后面小括号中表达式的值必须是整型或字符型
2、 case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2 ;但不能是变量或带有变量的表达式,如 a * 2
3、 case 匹配后,执行匹配块里的程序代码,如果没有遇见break 会继续执行下一个的 case 块的内容,直到遇到 break
语句或者 switch 语句块结束
练习:
请在代码编辑器中,使用 switch 语句补全代码,设置属于你的菜谱:如果今天是星期一、三、五,则早餐吃包子,如果是星期二、四、六,则早餐吃油条,如果是星期日,则吃“主席套餐”运行结果为: 吃主席套餐
public class HelloWorld {
public static void main(String[] args) {
char today='日';
switch(today){
case'一':
case'三':
case'五':
System.out.println("吃包子");
break;
case'二':
case'四':
case'六':
System.out.println("吃油条");
break;
default:
System.out.println("吃主席套餐");
}
}
}
(Java 常用的 3 种循环: while 、 do...while 、 for)
循环语句while
语法:
while(判断条件){
循环操作
}
练习:
实现功能:顺序输出 1 ~ 5 这 5 个数字
public class HelloWorld {
public static void main(String[] args) {
int i = 1;
while (i<5) {
System.out.println(i);
i++;
}
}
}
循环语句do...while
语法:
do{
循环操作
}while(判断条件);
实现功能:顺序输出 1 ~ 5 这 5 个数字
public class HelloWorld {
public static void main(String[] args) {
int i = 1;
do {
System.out.println(i);
i++;
}while(i<=5);
}
}
练习:
实现功能:计算 50 以内(包括 50 )的偶数之和
public class HelloWorld {
public static void main(String[] args) {
int sum = 0; // 保存 1-50 之间偶数的和
int num = 2; // 代表 1-50 之间的偶数
do {
//实现累加求和
sum = sum + num;
num = num + 2; // 每执行一次将数值加2,以进行下次循环条件判断
} while (num<=50); // 满足数值在 1-50 之间时重复执行循环
System.out.println(" 50以内的偶数之和为:" + sum );
}
}
--循环语句for
Java 的循环结构中除了 while 和 do...while 外,
还有 for 循环,三种循环可以相互替换。
语法:
for(循环变量初始化;循环条件;循环变化){
循环操作
}
--例
输出 1000 遍“我爱慕课网”,使用 for 的实现代码为:
for(int i=1; i<=1000; i++){
System.out.println("我爱慕课网");
}
练习:
实现功能:计算 1 到 100 之间不能被 3 整除的数之和
public class HelloWorld {
public static void main(String[] args) {
int sum = 0; // 保存不能被3整除的数之和
// 循环变量 i 初始值为 1 ,每执行一次对变量加 1,只要小于等于 100 就重复执行循环
for (int i = 1;i<=100;i++) {
// 变量 i 与 3 进行求模(取余),如果不等于 0 ,则表示不能被 3 整除
if (i % 3 != 0) {
sum = sum + i; // 累加求和
}
}
System.out.println("1到100之间不能被3整除的数之和为:" + sum);
}
}
循环跳转语句break
使用循环输出 1--10的数值,其中,如果数值大于 2 ,并且为 3 的倍数则停止输出。
public class HelloWorld {
public static void main(String[] args) {
for(int i=1;i<=10;i++){
if((i>2)&&(i%3=0)){
break;
}
System.out.println(i);
}
System.out.println("结束啦");
}
--练习
实现功能:循环将 1 到 10 之间的整数相加,如果累加值大于 20,则跳出循环,并输出当前的累加值。
public class HelloWorld {
public static void main(String[] args) {
// 保存累加值
int sum = 0;
// 从1循环到10
for (int i = 1; i <= 10; i++) {
// 每次循环时累加求和
sum = sum + i;
// 判断累加值是否大于20,如果满足条件则退出循环
if (sum>20) {
break;
System.out.print("当前的累加值为:" + sum);
//退出循环
}
}
}
}
循环跳转语句continue
打印 1--10 之间所有的偶数,使用 continue 语句实现代码为:
for(int i=1;i<=10;i++){
if(i%2!=0){
//判断i是否是偶数
continue;//通过continue结束本次循环,直接进行下一次循环
}
System.out.println(i);
}
练习:
实现功能:求 1 到 10 之间的所有偶数的和。
public class HelloWorld {
public static void main(String[] args) {
int sum = 0; // 保存累加值
for (int i = 1; i <= 10; i++) {
// 如果i为奇数,结束本次循环,进行下一次循环
if (i%2!=0) {
continue;
}
sum = sum + i;
}
System.out.print("1到10之间的所有偶数的和为:" + sum);
}
}
循环语句多重循环
1.打印长方形
********
********
********
public class HelloWorld {
public static void main(String[] args) {
System.out.println("打印长方形");
// 外层循环控制行数
for (int i = 1;i<=3;i++) {
for (int j = 8;j<=8;j++)
System.out.print("*");
}
// 每打印完一行后进行换行
System.out.println();
}
}
}
2.打印直角三角形
*
**
***
public class HelloWorld {
public static void main(String[] args) {
System.out.println("打印直角三角形");
// 外层循环控制行数
for (int i = 1;i<=3;i++) {
// 内层循环控制每行的*号数
// 内层循环变量的最大值和外层循环变量的值相等
for (int j = 1;j<=i;j++) {
System.out.print("*");
}
// 每打印完一行后进行换行
System.out.println();
}
}
}
编程练习
1.判断一个数(小于10位)的位数。输入999,则输出 “它是个3位的数!”
public class HelloWorld{
public static void main(String[] args){
int num = 999; //整型 去小数点
int count = 0; //整型 去小数点
if (num >= 0 && num<=999999999){ //定位小于10位数
while(num != 0){ //判断num不等于0 继续循环
count++; //num不等于0 count加1
num/=10; /* num=num/10 第一次循环 99.9 取整 99 继续循环 直到0.99取整 等于0 停止循环 */
}
System.out.println("它是个"+ count+"位的数!");
} else{
System.out.println("输入有误!");
}
}
}
2.功能描述:为指定成绩加分,直到分数大于等于 60为止,输出加分前和加分后的成绩,并统计加分的次数
public class HelloWorld {
public static void main(String[] args) {
// 变量保存成绩
int score = 53;
// 变量保存加分次数
int count = 0;
//打印输出加分前成绩
System.ou.println("加分前成绩:"+score);
// 只要成绩小于60,就循环执行加分操作,并统计加分次数
if(score<60){
score++;
count++;
}
//打印输出加分后成绩,以及加分次数
System.out.println("加分后成绩:"+score);
System.out.println("共加了"+count+"次");
}
}
数组
在声明数组时,数组所需的空间并没有真正分配给数组。我可以在声明的同时,用new来创建数组所需空间:
int[] a = new int[100];
这里创建了可以容纳100个整数的数组。相应的内存分配也完成了。
我还可以在声明的同时,给数组赋值。数组的大小也同时确定。
int[] a = new int[] {1, 3, 5, 7, 9};
*使用int[i]来调用数组的i下标元素。i从0开始。
其他类型的数组与整数数组相似。
一维数组
int arr[]; 声明int型数组
String str[]; 声明String数组
arr=new int[5]; 为数组分配内存
int month[]=new int[12]; 声明的同时为数组分配内存
初始化一维数组
第一种方法:int arr[]=new int[]{12,13,14};
第二种方法:int arr[]={12,13,14};
在项目中创建类GetDay,在主方法中创建int型数组,并实现将各月的天数输出。
public class GetDay{
public static void main(String[] args) {
//创建并初始化一维数组
int day[]=new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=0;i<12;i++){
System.out.println((i+1)+"月有"+(day[i])+"天");
}
}
}
实际开发中我们经常使用循环控制数组成员的操作。如:
int[] scores={78,91,84,68};
for(int i=0;i
练习
任务要求:
1、 定义一个整型数组,并赋初值 61, 23, 4, 74, 13, 148, 20
2、 定义变量分别保存最大值、最小值、累加值和平均值,并假设数组中的第一个元素既为最大值又为最小值
3、 使用 for 循环遍历数组中的元素,分别与假定的最大值和最小值比较。如果比假定的最大值要大,则替换当前的最大值;
如果比假定的最小值要小,则替换当前的最小值;
4、 循环执行过程中对数组中的元素进行累加求和
5、 循环结束根据累加值计算平均值,并打印输出相关内容
public class HelloWorld {
public static void main(String[] args) {
// 定义一个整型数组,并赋初值
int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };
int max = nums[0]; // 假定最大值为数组中的第一个元素
int min = nums[0]; // 假定最小值为数组中的第一个元素
double sum = 0;// 累加值
double avg = 0;// 平均值
for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素
// 如果当前值大于max,则替换max的值
if(nums[i]>max){
nums[i]=max;
}
// 如果当前值小于min,则替换min的值
if(nums[i]
使用 Arrays 类操作 Java 中的数组
Arrays 类是 Java 中提供的一个工具类,在 java.util包中。该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序、搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴~~)。
Arrays 中常用的方法:
1.排序
//导入Arrays类
import java.until Arrays;
public class HelloWorld {
public static void main(String[] args) {
//定义一个整型数组
int[]scores={78,93,97,84,63}
//使用Arrays类的sort()方法对数组进行排序
Arrays.sort(scores);
System.out.println("排序后数组中元素的值:");
//循环遍历输出数组中元素的值
for(int i=0;i
2.将数组转换为字符串
语法: Arrays.toString(数组名);可以使用 toString( ) 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开,如:
import java.until Arrays;
public static void main(String[] args){
//定义一个整型数组
int[]nums=new int[]{25,7,126,53,14,86};
//使用Arrays类的toString()方法将数组转换为字符串并输出
System.out.println("输出数组nums中的元素:"+Arrays.toString(nums));
}
在编辑器中定义了一个数组 hobbys ,请在第 2、11、14行中将代码填写完整,实现使用 Arrays 类对数组进行排序并转换输出。运行结果为: [ game , movie , sports ]
//导入Arrays类
import java.until Arrays;
public class HelloWorld {
public static void main(String[] args) {
// 定义一个字符串数组
String[] hobbys = { "sports", "game", "movie" };
// 使用Arrays类的sort()方法对数组进行排序
Arrays.sort(hobbys);
// 使用Arrays类的toString()方法将数组转换为字符串并输出
System.out.println(Arrays.toString(hobbys));
}
}
--使用 foreach 操作数组
在编辑器中定义了一个整型数组 scores ,保存学生成绩信息,通过 Arrays 类的 sort 方法对成绩数组进行排序,然后使用foreach 遍历输出数组中的元素。
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
// 定义一个整型数组,保存成绩信息
int[] scores = { 89, 72, 64, 58, 93 };
// 对Arrays类对数组进行排序
Arrays.sort(scores);
// 使用foreach遍历输出数组中的元素
for (int socre : scores) {
System.out.println(score);
}
}
}