一 理论知识学习部分
1基本知识 2数据类型 3变量
4运算符 5类型转换
6字符串 7输入输出
8控制流程 9大数值 10数组
标识符
标识符由字母、下划线、 美元符号和数字组成,且第一个符号不能为数字。
下列都是合法标识符: Hello 、$1234 、程序名、www_123
标识符可用作: 类名、 变量名、方法名、数组名、文件名等。
关键字
关键字就是Java语言中已经被赋予特定意义的一些单词。
常见有: 常见有:class 、public 、try 、catch 、if、float 、import 、void等。
关键字不做变量名。
注释
Java有三种注释的方式: 有三种注释的方式:
1. //
注释内容由 注释内容由//一直到此行结束。 一直到此行结束。
2. /* 和*/
定义一个注释块。
3. /** 开始,*/结束
这种注释方法可用来自动产生文档。
数据类型
Java是一种强类型语言。这意味着每一个变量必须声明一种为类型。
Java 共有8种基本类型
– 整数类型( 整数类型(int 、short 、long 、byte) )
– 浮点类型( 浮点类型(float 、double) )
– 字符类型 ( 字符类型 (char) )
– 布尔类型( 布尔类型(boolean )
整数类型
整型常量表示:
十进制:123, 6000
八进制:077, 065
十六进制:0x234, 0xab12
整型变量的数据类型分为四种:
int short long byte
Java 中整数的范围与运行Java代码的机器无关。
Java 中没有unsigned类型。
类型 | 存储需求 | 取值范围 |
int | 4字节 | -2147483648~2147483648 |
short | 2字节 | -32768~32768 |
long | 8字节 | -9 233 372 036 854 775 808~9 233 372 036 854 775 808 |
byte | 1字节 | -128~127 |
int 变量定义: int x; int height, age; 定义同时可赋值: int height=180, age=20; 对于int 型变量,内存分配个4 字节, 占32位,取值范围-2^31 ~ 2^31 -1 |
short 变量定义: short h; short m, n; ? 定义同时可赋值: short m=12, n=20; 对于 对于short 型变量,内存分配2个字节,占16位,取值 范围-2^15 ~2^15 -1 |
long 变量定义: long sum; long I, j, k; 定义同时可赋值: long sum=343435L; 对于 对于long 型变量,内存分配8 个字节,占64位,取值 范围-2^63 ~2^63 -1 |
byte 变量定义: byte w; byte x,y,z; 定义同时可赋值: byte x=12, y=24, z=36; 对于 对于byte 型变量,内存分配个1 字节,占8位,取值范 围-2^7 ~2^7 -1 |
浮点类型
Java中有两种浮点类型:
float double
浮点常量的表示:
小数表示 430.2
科学计数 4.302E2
表示溢出和出错的三种特殊的浮点数值:
正无穷大 负无穷大 NaN(非数字)
类型 | 存储需求 | 取值范围 |
float | 4字节 | 大约+-3.402 823 47E+38F |
double | 8字节 | 大约+-1.797 693 134 862 315 70E+308 |
float | double |
常量 12.23f, 32.00F, 2e40f 变量的定义 float x; float x1,x2,x3; 定义时赋初值 float x1=12.23f, x2=32.00f, x3; 对于float 型变量内存分配4 个字节,占32位。 |
常量 12.23d, 32.00D,123.0,6e-120 ?变量定义 double d; double d1,d2,d3; 定义时可以赋初值 double d1=12.23, d2=32.00d, d3; 对于double 型变量内存分配8 个字节,占64位。 |
字符类型
char:
常量
‘a’ 、‘A’ 、‘8’ 、‘?’
变量定义
char q; char c, type, cat;
定义同时可赋值
char c=‘a’, type, cat;
字符集: Java 采用unicode 字符编码集,该编码集16位,含有65536 个字符。
Unicode( 统一码、万国码)是一个编码规范,为解决传统字符编码方案局限产生,它为每种语言中的每个
字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
转义字符:前缀\u 表示Unicode 值,而十六进制的4位数字则表明具体是哪个Unicode字符。
一些特殊字符的转义序列。如 一些特殊字符的转义序列。如\b,\n,\\ 等。
布尔类型 boolean
常量
true、false
变量的定义
boolean x;
boolean x,y;
定义同时可赋值
boolean x=true, y=false;
在Java中,布尔值和整数不能相互转换。
变量
在Java中,每一个变量属于一种类型。在声明变量时,
变量所属的类型位于变量名之前。
– double salary;
– int vacationDays;
– long earthPopulation;
– boolean done;
在Java中,一行可以声明多个变量。逐一声明每一个变量可以提高程序的可读性。
– int i,j;//both are integers
变量初始化
一个变量声明后,必须通过赋值语句对它进行明确的初始化——永远不要使用一个未初始化的变量的值。
在Java中,可以在代码的任何位置进行变量声明。变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格。
在Java中,不能在同一作用域内声明两个同名的变量。不能在同一作用域内声明两个同名的变量。
常量
在Java中,使用关键字final来指示常量。习惯上常量名都用大写。
final double CM_PER_INCH=2.54;
关键字final表示只能对变量赋一次值,其值一旦设定,便不能改。
在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。
可以使用关键字 static final 声明一个类常量( classconstants)。
public static final double CM_PER_INCH=2.54;
运算符
-算术运算符
在java中,使用算数运算符 + - * / 表示加 减 乘 除运算。整数求余操作用%表示。
--结合赋值运算符
可以在赋值中使用二元运算符,例如x+=4;等价于x=x+4;
--自增运算符与自减运算符
java中也提供自增自减运算符,例如int n=12; n++;将n的值改为13.
--关系运算符和boolean运算符
java包含丰富的关系运算符,要检测相等性,可以使用==,可以用!=检测
不相等。还有常使用的< > <= >= 。java沿用了c++的做法,如&&和||等等...
运算符的优先级与结合性
优先级 | 操作符 | 结合性 |
1 | [ ] . () ( 方法调用) | 从左到右 |
2 | ! ~ ++ -- +( 一元) –( 一元) ()( 强制类型转换) new | 从右到左 |
3 | * / % | 从左到右 |
4 | + - | 从左到右 |
5 | << >>( 算术右移) >>>( 逻辑右移) | 从左到右 |
6 | < <= > >= instanceof | 从左到右 |
7 | == != | 从左到右 |
8 | & | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | ?: | 从右到左 |
14 | = += -= *= /= %= &= |= ^= <<= >>= >>>= | 从右到左 |
数学函数与常量
数学函数包含在 数学函数包含在Math类中。
– 幂函数
– 三角函数
– 指数函数及它的反函数等
Java还提供了两个常量。 还提供了两个常量。
– Math.PI
– Math.E
若不想在数学方法名和常量名前缀“Math.”,可在源文件顶部加上以下代码即可。
– import static java.lang.Math.*;
类型转换
隐式类型转换
大多数的数值转换是遵循优先级的关系自动完成的。
转换原则如下:
如果两个操作数中有一个是double类型的,则另一个将会转换成double类型。
否则,如果两个操作数中有一个是float类型的,另一个将会转换成float类型。
否则,如果两个操作数中有一个是long类型的,另一个将会转换成long类型。
否则,两个操作数都将转换成int类型。
强制类型转换
强制类型转换的语法:(目标类型)变量名
在进行强制类型转换时,当心丢失数据。
例1:double x=9.987;
int nx=(int) x; //转换后 nx=9
例2:若要把一个浮点数转换成与其最接近的数(即
进行四舍五入)需使用Math.round()方法。
double x=9.987;
int nx=(int)Math.round(x); //结果:nx=10
字符串
Java字符串是Unicode字符的序列,它是组织字符的基
本数据结构,用法类似于字符数组。
有内置的字符串类型,而是在标准Java类库中提供了一
个Java 预定义类String。在Java中,字符串被当作对象来处理。
程序中需要用到的字符串可以分为两大类:
– 创建之后不会再做修改和变动的 不可变字符串String 类;
– 创建之后允许再做 更改和变化的构建字符串StringBuilder。
String类
String类的构造方法
创建String的一个对象并进行初始化,需要调用类
String的 的 构造方法,主要有以下创造方法:
① String():创建一个空串
② String (String value)
③ String (char value[])
④ String (char[] ,int startIndex ,int numChars)
⑤ String (byte[] ,byte hibyte)
⑥ String (byte[] ,byte hibyte ,int startIdnex ,intnumChars)
String类的基本操作
(1) 获得字符串的子串
(2) 串连接(+)
(3) 获取字符串的长度
(4) 检测字符串是否相等
(5) 字符串检索
(6) 字符串与数值的转化
(7) 数值转化为字符
(8) 获得对象的字符串表示
String 类的API及文档
String 类中包含各类字符串处理的50 多个方法;
使用JDK 在线API文档可以查阅所有标准类及其方法。
-打开浏览器,指向JDK 安装目录下的docs/spi/index.html
StringBuilder类
StringBuilder类的说明
如果需要多个小段字符串连接创建一个字符串时,每次连接字符串时,
都会构建一个新的String对象,既耗时,又浪费空间。
使用StringBuilder类就可以避免这个问题的发生。
步骤:
– StringBuilder builder = new StringBuilder(); ; //create a string builder
– builder.append(ch); //appends a single character
– Builder.append(str); //appends a string
在JDK5.0中引入StringBuilder类,这个类的前身是StringBuffer类。
StringBuilder类的API
(1)分配/ 获取字符串的长度
(2)分配/获取字符串的容量
(3)字符串的检索和子串
(4)字符串的修改
(5)字符串类型转换
输入输出
读取输入
通过控制台进行输入时,需要构造一个 通过控制台进行输入时,
需要构造一个Scanner对象,并与“标准输入流”System.in关联。
– Scanner in = new Scanner(System.in);
– 例3-2 InputTest.java p55
Scanner 类定义在java.util包中,因此使用时需将相应的包加载进来。
Scanner 类具体API 见p57。
由于 由于Scanner类输入是可见的,所以不适用于从控制台读
取密码。Java SE 6.0 特别引入Console类实现这个目的。
Console 类具体API 见p57。
格式化输出
使用System.out.print(x) 将数值x输出到控制台上,
这条命令将以x对应的数据类型所允许的最大非0数字位数打印输出x。
文件输入与输出
要想对文件进行读取,就需要一个用File对象构造一个Scanner对象。比如:
Scanner in = new Scanner(new File(“myfile.txt”));
要想写入文件,就需要构造一个PrintWriter对象,在构造器中,只需提供文件名
PrintWriter out = new PrintWriter(“myfile.txt”);
控制流程
Java有5种语句:
1.方法调用语句 2.表达式语句 3.复合语句 4.控制语句 5.packege 语句和import语句
条件语句:if语句 switch语句
循环语句:while do-while for
中断控制流程语句:break contine
(注意:Java 中没有goto语句!!!Java中提供了一种带标签的break语句,用于跳出多重嵌套的循环语句。)
返回语句:return value
大数值
如果基本的整型和浮点型数据无法达到要求的精度 ,那么可以使用ava.math 包中的两个类,
BigInteger 和BigDecimal。这两个类可以操作任意长的数字。
BigInteger类实现了任意精度的整数运算
BigDecimal实现了任意精度的浮点运算
数组
数组是一种数据结构,它是有序数据的集合,数组中的每个元素的数据类型都是相同的。
对元素的确定是由数组名和它的下标实现的,如a[0] 代表数组a的第一个元素,
a[1] 代表数组a的第二个元素,依次类推。
数组的声明
一维数组格式:数组元素类型[] 数组名字;
二维数组格式:数组元素类型[][][ 数组名字;
float[] boy; double[] girl; float[][] a; double[][] b;
与C/C ++不同,Java在数组声明时并不为数组分配内存。
在Java中,数组是独立的类,有自身的方法。
一个数组是一个对象,它由基本数据类型组成。
数组的创建
数组声明后,要用new运算符为其分配内存空间,分配内存空间时必须指明数组的长度。
如: boy=new float[5]; int[] age=new int[10];
数字数组创建后,所有数组元素自动初始化为0,不能再更改大小,
boolean 数组创建后数组元素初始化为false;对象数组初始化为null.
一维数组的初始化
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
多维数组的初始化
int[][] magicSquare={ {16, 3, 2, 13 }, {5, 10, 11, 8},{9, 6, 7, 12},{4, 15, 14, 1} };
不规则数组
Java可以使用不规则数组,即数组的每一行有不同的长度
在创建不规则数组时,从最高维开始分别为每一维数组分配空间。
二 实验部分
1、实验目的与要求
(1)进一步熟悉命令行和IDE两种方式下java程序开发的基本步骤;
(2)掌握Eclipse集成开发环境下导入Java源程序的过程;
(3)掌握Java语言构造基本程序的数据类型、变量、运算符、各类表达式、输入输出、流程控制的基本语法;
(4)掌握String类、StringBuilder类、数组类的用法。
2、实验内容和步骤
实验1:编写java 应用程序,输出以下4个表达式的值。
int i=1; double d=1.0; (1) 45+45*50%i-- (2) 1.5*3+d++ (3) (true)&&(3>4) (4) (i>0)||(i<0) |
实验2:编写包含以下代码片段的java应用程序,输出字符串类对象s3的值。
String s1=“Hello!”; String s2=“World”; String s3=s1+s2; |
实验3:更改实验2中s1、s2、s3为StringBuilder类对象,
观察程序运行结果并与实验2结果进行对比,理解String类对象与StringBuilder类对象的区别。
实验4:在命令行方式下调试运行下列程序,理解java应用程序命令行参数的用法。
public class Try { public static void main(String[] args){ if (args[0].equals("-h")) System.out.print("Hello"); else if (args[0].equals("-g")) System.out.print("goodbye,"); for(int i=1;i<args.length;i++) System.out.print(" "+args[i]); System.out.println("!"); } }
实验5:Eclipse环境下导入第3章示例程序InputTest.java步骤:
(1) 新建java project如下图:
(2) 选择File->import->File ystem->Next,打开文件导入窗口如下图,点击上方Browse选择导入源程序并选中,
点击下方Browse选择源程序导入位置为新项目InputTest/src位置后,点击finish完成导入。
(3) 打开InputTest项目src文件夹的缺省包,双击InputTest.java在IDE源程序编辑区打开文件。
(4) 右键单击InputTest.java文件名打开快捷菜单,选择Run as->java application运行此程序,
结合程序运行结果,理解代码中Scanner类对象用法,掌握java控制台输入方法。
实验6:按照实验5的操作步骤,导入WriteReadFileTest.java示例程序,结合程序运行结果理解程序代码,观察项目文件夹下文件myfile.txt的内容,掌握文件的输入输出操作。
实验7:按照实验5的操作步骤,导入第3章示例程序,每个示例程序从语法、算法两个角度总结学习内容。
(1)测试Retirement.java, Retirement2.java, LotteryOdds.java掌握循环控制结构;
(2)测试BigIntegerTest.java,掌握大数值类的用法;
(3)测试LotteryDrawing.java,掌握数组的用法;
(4)测试CompoundInterest.java,掌握多维数组的用法;
(5)测试LotteryArray.java,掌握不规则数组的用法。
感想:学习了解java的部分基础知识,一步熟悉命令行和IDE两种方式下java程序开发的基本步骤,
掌握Eclipse集成开发环境下导入Java源程序的过程,掌握Java语言构造基本程序的数据类型、变量、运算符、各类表达式、输入输出。
掌握String类、StringBuilder类、数组类的用法。
原文地址:https://www.cnblogs.com/2017xinghui/p/9608633.html