目录
一、编写第一个java程序
1、java的基本格式
二、变量和数据类型以及运算符
1、进制的转换
2、 变量的使用
2.1变量的分类
3、常量
4、数据类型
4.1整型的使用
4.2浮点类型
4.3字符类型
4.4boolean类型
5、运算符
5.1字符串连接符
5.2运算符优先级
5.3类型转换问题
三、java中实现简单的键盘输入
四、控制语句
1、条件判断语句
1.1if单分支结构
1.2if-else双分支结构
1.3if-else多分支结构
2、switch语句
2.1switch多分支结构(多值情况)
3.循环语句
3.1while循环
3.2do-while循环
3.3for循环
3.4嵌套循环
3.5break和continue
3.6循环使用的练习
4、方法
4.1方法的声明及调用
4.2方法的重载
5、递归
java第一周学习,前面的部分内容与c++语法基本一致,因此本周学习笔记当作c++复习以及对java入门的认知。
一、编写第一个java程序
1、java的基本格式
以输出hello world为例:
public class test {
public static void main(String[] args) {
System.out.println("hello world");
}
}
注意大小写不可以搞错。
二、变量和数据类型以及运算符
1、进制的转换
二进制、十进制、八进制、十六进制的相互转换与c++相同。
2、 变量的使用
变量使用的要求和c++也是一致的。
注意:标识符开头不能是数字。
在学习之后的方法时上网查询了定义局部变量,类变量 ,实例变量的定义方法,在此先进行了解,之后学习中慢慢深入。
/**
* 此段代码来自于JavaSE知识库
*/
public class TestTwo {
//以下四个变量都是成员变量(全局变量)
int num ; //属于基本数据类型的实例变量
Integer obj ; //属于引用数据类型的实例变量
static char ch = 'A'; //类变量(静态变量)
final double constant= 12.6; //属于常量的实例变量
public void display(){
//以下两个属于该方法的局部变量,必须先赋值才能使用,作用范围仅限于函数体之内
int age = 1;
String name = "Tom";
System.out.println("name:"+name+";age: "+age);
}
public static void main(String[] args){
System.out.println(num); //这句会报错,因为num变量属于实例变量,只有将Test实例化之后才能使用
System.out.println(Test.ch); //这句则不会报错,因为ch属于类变量,不用实例化Test也能使用
Test test = new Test();
System.out.println(test.num); //num为基本数据类型,打印出的默认值为0
System.out.println(test.obj); //obj为引用数据类型,打印出的默认值为null
}
}
2.1变量的分类
接触了一部分面向对象,现在对变量的定义及使用有了更深的了解,现在返回来添加部分内容。
变量分为局部变量,成员变量(实例变量)和静态变量。具体使用如下:
3、常量
常量是一个固定的值,一旦初始化就不可再次更改。
c++中初始化常量时候使用的是define,而java中使用的是final。
4、数据类型
java中数据类型可以分为基本数据类型和引用数据类型
基本数据类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)、float(4字节)、double(8字节)、char(2字节)、boolean(1字节)。
引用数据类型:class(类)、interface(接口)、数组。
基本数据类型的使用与c++基本一致,引用数据类型之后再进行讨论。
4.1整型的使用
整型的使用在变量中以及提及,这里不做举例。
4.2浮点类型
public class test {
public static void main(String[] args) {
float a=3.14f;//float类型赋值的时候后面要加一个f,不然默认为double类型,double类型不能直接赋值给float类型。
System.out.println(a);
double c=3.1454;
System.ouy.println(c);
}
}
4.3字符类型
public class test {
public static void main(String[] args) {
char a='中';//由于java中使用的是unicode编码,因此可以直接输出汉字。
System.out.println(a);
char c='\u0061';//java中字符型的十六进制表示方法。
System.out.println(c);
String str=”我爱中国“;
System.out.println(str);
}
}
注意:以后我们所学的String表示字符串,本质是char类型构成的数组。java中的字符串不是基本数据类型,而是一个独立定义的类。
以上的转义字符会经常使用,要熟记。
4.4boolean类型
注意点:java中不能用0和非0代表true和false,与c++不同。
public class test {
public static void main(String[] args) {
boolean a=true;
boolean b=false;
if(a)System.out.println("ture");
else System.out.println("false");
}
}
5、运算符
java中各类运算符:
赋值运算符、扩展运算符、关系运算符、逻辑运算符,位运算符,条件运算符等等在c++中接触较多再此不具体介绍。
注意,位运算符是指进行二进制位的运算,&等都是按位计算,另外<<左移运算符相当与乘2,>>右移运算符相当于除以2。
5.1字符串连接符
"+"运算符两侧操作数只要有一个是字符串(String类型,系统会自动把另一个操作数转换为字符串进行连接。
public class test {
public static void main(String[] args) {
String a="3";
int b=4;
System.out.println(a+b);//输出结果34。
System.out.println("b="+b);//java中输出结果为b=4这种模式时,就要使用到字符串连接符,因此十分重要。
}
}
5.2运算符优先级
由于在学习c++时对这块内容就不是很熟悉,因此在学习java时将此内容捎带复习。
5.3类型转换问题
类型转换分为自动类型转换和强制类型转换。
强制类型转换:用于强制转换一个数据的类型,c++中使用较多,这里不提及。
自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。
特例:int类型可以转换为byte,short和char类型。
注意!类型转换较大数字的时候 ,要注意溢出。
三、java中实现简单的键盘输入
键盘输入:Scanna
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入你的用户名");
String uname=s.nextLine();//输入一个字符串
System.out.println("请输入你的年龄:");
int age=s.nextInt();
System.out.println("请输入你的月薪:");
double month=s.nextDouble();
System.out.println("程序运行结束");
System.out.println("用户名:"+uname+" 年龄:"+age+" 月薪:"+month);
}
}
注意,在开头要加上import。
四、控制语句
1、条件判断语句
1.1if单分支结构
语法结构:
if(布尔表达式){
语句块;
}
1.2if-else双分支结构
语法结构:
if(布尔表达式){
语句块;
}
else{
语句块2;
}
1.3if-else多分支结构
语法结构:
if(布尔表达式1){
语句块1;
}
else if(布尔表达式2){
语句块2;
}
else if(布尔表达式3){
语句块3
}
....
else if(布尔表达式n){
语句块n;
}
else{
语句块n+1;
}
2、switch语句
2.1switch多分支结构(多值情况)
语法结构:
switch(表达式){
case 值1:
语句 1;
break;
case 值2:
语句 2;
break;
[default:
默认语句;]
}
3.循环语句
3.1while循环
语法结构:
while(布尔表达式){
循环体;
}
3.2do-while循环
语法结构:
do{
循环体;
}while(布尔表达式);
注意:while和dowhile的循环体在java中不能使用while(a)或者while(1)这种格式,只能使用while(true)。
3.3for循环
语法结构:
for(初始表达式;布尔表达式;迭代因子){
循环体;
}
3.4嵌套循环
3.5break和continue
break:中断循环,不执行剩下的循环语句。
continue:结束本次循环,进行下一次的循环。
带标签的break和continue语句直接使用,比如:continue outer;
3.6循环使用的练习
用年薪计算来练习循环语句,因为本次练习存在ScannerLine和ScannerInt使用时缓冲区有回车的解决方法以及对字符串判断的相关事项,因此作为对于循环的一次练习。
package studyday1;
import java.util.Scanner;//使用Scanner类,目前的学习实现键盘输入的方法。
public class study2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//Scanner类的使用实现键盘输入。
System.out.println("年薪计算程序");
System.out.println("exit退出程序,next计算下一个年薪");
while (true) {
System.out.println("请输入月薪:");
int monthSalary = scanner.nextInt();//获得一个整数。
int yearSalary = monthSalary * 12;
System.out.println("年薪是" + yearSalary);
System.out.println("请输入命令(exit,next. 其他任意字符表示继续执行):");
scanner.nextLine();//把之前读取整数时,缓冲区内所存在的输入的回车符读取,才能够用command读取新的字符串。如果不存在,则会直接跳过。
String command= scanner.nextLine();//键盘获取一行字符串,目前所学前面一定要加一个scanner.nextLine()读取之前输入的回车。
System.out.println(command+"=======");
//注意!!这里的判断不能这么使用if("exit"==command),用等号表示对象的判断,这里要的是值的判断,因此无法使用。现阶段可以用数字代替退出按钮。
if("exit".equals(command)){//判断字符串是否为exit和next。
System.out.println("退出软件");
break;
}
if ("next".equals(command)){
System.out.println("请重新输入新的数据......");
continue;
}
if(yearSalary>100000&&yearSalary<200000){
System.out.println("你的年薪超过了90%的人");
}
if (yearSalary>=200000){
System.out.println("恭喜你,你的年薪粗熬过了98%的人");
}
}
}
}
4、方法
方法就是一段完成特定功能的代码片段,类似于其他语言的函数。面向过程中,函数是最基本的单位,整个程序由若干个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。
4.1方法的声明及调用
方法的声明格式:[修饰符1 修饰符2...] 返回值类型 方法名(形式参数列表){
java语句;....
}
方法的调用格式:对象名.方法名(实参列表)
例子:
package studyday1;
public class study2 {
public static void loveJava(int num) {//在java中,定义方法public static必须加,原因之后会了解。
//这里的void就和c++中的void a(){}一致,是没有返回值的,改为int就有返回值,并且最后用ruturn接收
System.out.println("I love java"+num);
System.out.println("I love java"+num);
}
public static void main(String[] args){
loveJava(1);
loveJava(100);
}
}
4.2方法的重载
方法的重载是指一个类中可以定义多个方法名相同,但是形参不同的方法,根据不同的参数自动匹配对应的方法。
注意:重载中不同是指形参的个数,形参的类型,形参的顺序不同,形参的名称不同以及只有返回值不同(比如int a(String str)和void a(Strng str))不构成重载。
例子:
定义时:
public static int add(){
return 0;
}
public static int add(int a,int b){
return a+b;
}
调用时:
add();//进行第一个方法的调用
add(3,4);//进行第二个方法的调用
重载为了表达一个相同含义,比如都是add相加,一个2个整数相加,一个3个整数相加,一个2个浮点数相加,为了让其他人方便查看以及调用,就使用重载。
5、递归
递归的基本思想就是“自己调用自己”。
递归结构体包括两个部分:定义递归头(什么时候不调用自己,如果没有递归头会出现死循环)和递归体(什么时候需要调用自己的方法)。
package studyweek4;
public class 递归 {
//求阶乘
public static void main(String[] args) {
long d1 = System.currentTimeMillis();
long result=factorial(5);
System.out.println("阶乘的结果是:"+result);
}
static long factorial (int n){
if (n == 1) {//递归头
return 1;
} else {
return n * factorial(n - 1);
}
}
}
接下来接触一个求耗时的代码
long d1=System.currentTimeMillis();