Java基本程序结构设计包括数据类型,运算符和程序流程控制。
1. 注释,关键字,标识符
- 注释
作用:提高程序的可读性(编译器不会编译)
常见类型:(1)单行注释:用 “ // "作为注释标志。用于注释单行代码
(2)多行注释:用 “ /* ”开头和用 “/”结尾。用于注释多行代码
(3)文档注释:用 “ / ”来头和用 “/ ”,用于注释文档 - 关键字
Java语言内部定义的标识符,供内部使用,比如说:calss,static,this,等等。 - 标识符
作用:用来命名变量,方法,类名等等。
要求:(1)通常以字母,下划线__,美元符号¥开头。不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法滴;
(2)标识符的其他部分可以用数字,字母,下划线,美元符号等
标志变量和方法的标识符采用驼峰法则:第一个字母小写,第二个字母大写,如eatFood();
(3)大小写敏感。长度无限制。关键字不可作为标识符。
2 变量和常量
-
变量
定义:代表可操作的存储空间,空间位置确定,值不确定。可以用停车位类比。
命名法则:由字母、数字、下划线(_)、美元符($)组成,但是不包括@、%、空格等,但是开头不能为数字。
组成要素:变量名,变量类型,作用域。如 int a =4;
类型:局部变量,成员变量,静态变量
在一个类中,如果一个变量能够用来描述一个类的属性,那就定义为成员变量,否则,它就应该定义为局部变量。而如果一个变量在全局中都能使用(某个内容是被所有对象所共享),那么我们就可以把这个变量用static来修饰,即为静态变量。
-
常量
它的值被设定后,在程序运行过程中不允许改变,一般利用final修饰。
语法:final 常量名 = 值
常量名一般使用大写字符,
如:final int SCORE =100;
3. 数据类型
- 数据类型结构图
2. 基本数据表示范围
<1>4种整型,int型(4字节),short型(2字节),long(8字节),byte(1字节)。
如:int a=4;short b=1;byte c=2;
<2>浮点型,float型(4字节),double型(8字节)。
如:float d=0.1f;(float的定义后面必须加f),double d2 = 10.9d(double的定义后面必须加d)
<3>char型,” A”含有A的字符串,‘A’ 字符常量A.
如: char c1 = ‘a’;
<4>布尔型,Boolean,faluse,0. true,1.
如:Boolean start=true;
(一个字节有8个bit,)
定义方式:
- 类型转换
两种转换方式:自动转换或强制转换 - 自动类型转换 : 字节数小的可以转换为字节数大的,即隐式转换
目标类型能与源类型兼容,如 double 型兼容 int 型;
目标类型大于源类型,如 double 类型长度为 8 字节, int 类型为 4 字节,因此 double 类型的变量里直接可以存放 int 类型的数据 。 - 强制类型转换
容易使得数据精度丢失
强制类型转换的语法是 (数据类型)数值
double avg1=75.8;
int avg2=(int)avg1;
4. 运算符
Java运算符主要包括算术,逻辑,赋值,扩展,关系,逻辑,条件,字符串,位运算符等,这些运算符的作用用于表示不同数值类型之间的相互作用,比如说算术运算符的加减乘除求余等,关系运算符的大于小于,逻辑运算符的与或非等。
- 算术运算符
-
整数运算中,如果两个操作数有一个为long,则结果为long;若没有long型数值,结果为int,即使操作数的类型为short或byte。(与其字节数有关)
-
浮点运算,两个操作数有一个为double时,则结果为double;只有当两个操作数全为float时,则结果为float。(与其字节数有关)
-
求余运算,余数的正负与左操作数相同。例:7%3=1;-7%3=-1
-
自增自减运算,B++和B–先赋值后加减,++B和–B先加减后赋。
-
赋值运算符
-
关系运算符
-
输出的结果为布尔型
-
逻辑运算符
- 条件运算符
例如:x?y:z, x为布尔类型值,若x为真,则返回为y值,若x为假则返回为z。
1>3?2:1结果为:1, 5>4?2:1结果为2. - 字符串运算符
字符串运算符: + 可以连接不同的字符串 - 位运算符
5. 流程控制语句
用来控制流程中语句执行的顺序,一般包括顺序结构,选择结构和循环结构,,类似于建筑中的混凝土,
1. 顺序结构
先执行a,在执行b
2. 选择结构
用于在给定的条件,根据判断的结果来控制程序的流程。
- 单选择结构
if 型
if(条件表达式){
执行语句;
}
if–else型
if(关系表达式) {
语句体1;
}else {
语句体2;
}
if…else if…else语句
if(条件表达式){
执行语句;
}else if(条件表达式){ 选择第一个满足条件的分支语句为分支入口;
执行语句;
}else{
执行语句;
}
- 多选择结构
switch,用于多值得判断
switch(表达式)
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
3. 循环结构
在学习循环语句时,最重要的就是发现流程的规律,然后再用程序设计语言将该规律描述出来,从来实现程序要求的流程。
- for循环
for关键字的意思是“当…的时候”,是实际开发中比较常用的循环语句,
for(初始化语句;循环条件;迭代语句){
语句块;
}
for(int i = 0;i < 10;i++){
System.out.println(i);
}
/*
则该语句的执行流程为:
1、 执行int i = 0;
2、 判断i<10,如果条件不成立则结束,否则继续执行下一步
3、 执行System.out.println(i);
4、 执行i++
5、 跳转到步骤2继续执行
*/
- while do型
while关键字的中文意思是“当……的时候”,也就是当条件成立时循环执行对应的代码。
执行流程:在执行while语句时,首先判断循环条件,如果循环条件为false,则直接执行while语句后续的代码,如果循环条件为true,则执行循环体代码,然后再判断循环条件,一直到循环条件不成立为止。
while(判断条件) { 执行语句 }
int i = 0;
while(i < 10){
System.out.println(i); //输出变量的值
i++; //变量的值增加1
}
/*
其执行流程为:
1、 执行int I = 0;
2、 判断i<10是否成立,如果不成立则结束,否则执行下一步
3、 输出变量i的值
4、 i的值增加1
5、 跳转到步骤2继续执行
*/
- do while型
do {
语句块;
}while(条件表达式);
注:
-
流程控制语句中,break强行跳出循环,不执行循环中的剩余语句,continue用于终止本次循环,即系执行下一次循环。
如果将Java语言编程比作盖房子的话,那么这部分的内容就好比会水泥和混凝土,所涉及到的是Java编程中常用到的知识点,换句话来说,就是Java编程世界里的常识,比如说如何定义一个常量,怎么样定义一个标识符,都涉及哪些数据类型,数据之间怎么运算当设计分支的时候如何控制流程,等等等等。盖房子需要将混凝土水泥作为最基本的材料,如果连材料都没有,再伟大的建筑师也没办法盖一座大楼,同样的道理,Java语言程序会应用到上面的基础知识,包括数据类型,运算符和流程控制结构三大部分,数据类型说明在Java程序中常用的数据有哪些,怎么样定义,运算符用于说明这些数据的基本操作是什么?怎么样来操作这些数据,流程控制语句用来说明当一些基本的数据和操作方式之后,每个语句之间的逻辑结构是怎么样子的,从前向后的顺序结构,还是有选择条件的选择结构,亦或是主要在某一个条件下执行的循环结构。
**
常见程序实例
**
输出乘法表:
/*
* "实战——九九乘法口诀表"*/
public class Program {
public static void main(String [] args) {
System.out.println("九九乘法口诀表:");
for (int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
}
// 注意print与println的区别
System.out.print("\n");
// System.out.println();
}
}
}
输出星座
import java.util.Scanner;
public class Program {
public static void main(String [] args) {
System.out.println("请输入您的出生日期 :");
Scanner sc=new Scanner(System.in);
int monthday=sc.nextInt();
int month=monthday/100;
int day=monthday%100;
String xingzuo=""; //保存字符串
switch (month) {
case 1:
xingzuo=day<21?"摩羯座":"水瓶座";
break;
case 2:
xingzuo=day<20?"水瓶座":"双鱼座";
break;
case 3:
xingzuo=day<21?"双鱼座":"白羊座";
break;
case 4:
xingzuo=day<21?"白羊座":"金牛座";
break;
case 5:
xingzuo=day<22?"金牛座":"双子座";
break;
case 6:
xingzuo=day<22?"双子座":"巨蟹座";
break;
case 7:
xingzuo=day<23?"狮子座":"狮子座";
break;
case 8:
xingzuo=day<24?"摩羯座":"处女座";
break;
case 9:
xingzuo=day<24?"处女座":"天秤座";
break;
case 10:
xingzuo=day<24?"天秤座":"天蝎座";
break;
case 11:
xingzuo=day<23?"天蝎座":"射手座";
break;
case 12:
xingzuo=day<22?"射手座":"摩羯座";
break;
default:
break;
}
System.out.println("您的星座是"+xingzuo);
}
}
实现阶乘
/**
* 求1+2!+3!+...+10!的和
* @author Vivinia
*
*/
public class factorial {
public static void main(String args[]) {
long sum=0,num=1; //sum用于加和,num作为每一个数阶乘后的结果
for(int i=1;i<=10;i++) {
num*=i; //num始终保留上一次阶乘的结果,所以只需要乘i
sum+=num; //每次阶乘后相加
}
System.out.println("1+2!+3!+...+20!="+sum);
}
}
/**
* 1~10阶乘求和
*/
public class Factorial {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += m1(i);
//sum += m2(i);
}
System.out.println(sum);
}
//求阶乘 方法一
private static int m1(int n) {
if (n == 1) return 1;
return n *= m1(n - 1);
}
//求阶乘 方法二
public static int m2(int n) {
if (n == 1) {
return 1;
}
int i = 1;
int res = 1;
while (i <= n) {
res *= i;
i++;
}
return res;
}
}
1+2+3+4+…+100
public class Tset {
public static void main(String[] args) {
int sum = 0;
for(int i = 1;i <= 100; i++){
sum += i;
}
System.out.println("1+2+3+4+5+......+99+100的和为:"+sum);
}
}