变量、标识符、关键字与数据类型
1.标识符命名风格约定:
①不能以数字开头,也不能有%等符号。可以有 _和$但不用作开头。
②方法名、变量名首单词小写,其余单词首字母大写。如anyVariableName
③类名、接口名每个单词的首字母大写.如:LaserPrinter
④符号常量名所有单词字母均大写。如:RED
2.Java 语言是一种强类型语言。通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型。
3.java是区分大小写的 例如String关键字 S为大写
4.cpp中有的bool类型,在java中为boolean
5.为float变量赋值时数值后面要加f,不加f则前面的数据类型只能是double
6.java中的final关键字表现为cpp的const关键字作用(例如final String XXX)
另:习惯上常量名用大写字母
7.强制类型转换:double a; int b=(int)a
(不四舍五入,直接截断小数位)
运算符
1.比较运算符和cpp相同,但是比较结果是false和true。比如:System.out.println("hi " + (a>b));
结果为hi false或hi true。
但是在cpp中 cout<<(a>b)<<endl;
结果为0或1
2.自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量。
3.注意++和–在左边或是右边的区别
4./号和cpp中一样 int/int 结果只能是int,且也并不四舍五入,而是直接截断。
5.一个一直以来忽略的运算符:^异或。有且只有一个正确,在cpp中也相同。
6.条件运算符和cpp也是一样的。
语法形式:布尔表达式 ? 表达式1 :表达式2
运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值。
7.使用逻辑运算符的“短路”现象:&&左边表达式为false,则不会再检查(执行)右边表达式是否正确;相同的,若||左边表达式为true,则也不会检查(执行)右边表达式。
8.附表 运算符的优先级
流程控制语句
熟悉的if、switch、while、do…while和for语句都和cpp相同
至于其他还有没有了…臣妾不知道哇……
switch语句的语法回顾:
switch( )
{
case 1:
……
break;
case 2:
……
break;
case 3:case 4:
……
break;
default:
……
}
default那句不用break
1、 switch 后面小括号中表达式的值必须是整型或字符型
2、 case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2 ;但不能是变量或带有变量的表达式,如 a * 2
3、 case 匹配后,执行匹配块里的程序代码,如果没有遇见 break 会继续执行下一个的 case 块的内容,直到遇到 break 语句或者 switch 语句块结束
default 块可以出现在任意位置,也可以省略
break跳出循环(只跳出一层) continue 结束这次循环马上进入下一次
输入输出和注释
输出:
System.out.println();
这样的输出是自带换行符的,若无需换行则用System.out.print();
若输出有多个变量,则用+连接 例如“hello”+ int1
输入:
获取用户输入的信息可以使用Scanner工具类(位于java.util包中,使用时需导入)
1.在package下面那行写 import java.util.Scanner;
2.创建Scanner对象(例如 Scanner input=new Scanner(System.in);)
3.接收并保存用户输入的值(字符串:input.next() .nextDouble() .nextInt())
注释:
java中的行注释、段落注释和cpp中相同
文档注释方法:
/**
*/
另:可以通过 javadoc 命令从文档注释中提取内容,生成程序的 API 帮助文档。
使用文档注释时还可以使用 javadoc 标记,生成更详细的文档信息:
@author 标明开发该类模块的作者
@version 标明该类模块的版本
@see 参考转向,也就是相关主题
@param 对方法中某参数的说明
@return 对方法返回值的说明
@exception 对方法可能抛出的异常进行说明
数组
1.注意下标从0开始
2.java中 数据类型[ ] 数组名;或者 数据类型 数组名[ ];都是可以的形式 即int a[] 或者int[] a都可。但是int a[];时只是声明了数组类型的引用变量,并没有创建数组对象,此时内存中没有给数组分配空间。
3.但是 分配空间不能直接 int scores[3]这样,而应该是int scores[]=new int[3];或者 int[] scores=new int[]{1,2,3};使用后面这种方式时中括号里面不可以有数字。
4.例如数组名为scores 利用scores.lenth可以获取数组长度(最大下标为数组长度-1)
5.可用Arrays类操作java中的数组 也是在java.util包中(import java.util.Arrays;)
与cpp中一样 也可以用sort直接对数组进行排序
Arrays.sort(数组名); (cpp中为 sort(a,a+n)这样的形式 sort包含在algorithm头文件中)
默认均为升序排序
6.除此之外Arrays还提供其他的方法 如:
给数组赋值:通过fill方法。
比较数组:通过equals方法比较数组中元素值是否相等。
查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
Arrays.toString(数组名);可以使用 toString( ) 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开
7.java中并没有foreach关键字
但是可用for(元素类型 元素变量:遍历对象){}这样来达到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 score:scores)
{
System.out.println(score)
}
}
}
类似于数组名叫foods 元素变量就是food 遍历对象就是foods
二维数组
声明:
数据类型[][] 数组名=new 数据类型[行的个数][列的个数];
//或
数据类型[][] 数组名;
数组名=new 数据类型[行的个数][列的个数];
在声明时赋值:
数据类型[][] 数组名={{,},{,},{,}}(此时为三行两列。外面的括号内为行数,里面的括号内为列数)
在定义二维数组时也可以只指定行的个数,然后再为每一行分别指定列的个数。如果每行的列数不同,则创建的是不规则的二维数组
例如:
int[][] num=new int[3][];
num[0]=new int[2];
num[1]=new int[3];
num[2]=new int[4];
在二维数组中 names.length为行数; names[某行].length为该行列数
方法
在个人的理解里,java中的方法,也即cpp中的函数,不过似乎java方法前面基本都会有public、protected和private这样的修饰符。(方法不是类!)
调用方法时 要先创建类的对象
对象名.方法名()来实现调用
例:
public class HelloWorld
{
public static void main(String[] args)
{
// 创建对象,对象名为hello
HelloWorld hello = new HelloWorld();
// 调用方法
hello.showMyLove();
}
//定义无参无返回值的方法
public void showMyLove()
{
System.out.println("LOVE you!");
}
}
1.方法的返回值最多只能有一个,不能返回多个值
2.方法的参数可以是基本数据类型,如 int、double 等,也可以是引用数据类型,如 String、数组等。
若返回值为数组 应为 int[] 方法名(变量)
例如:
//导入java.util.Arrays;
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
// 创建对象,对象名为hello
HelloWorld hello = new HelloWorld();
// 调用方法并将返回值保存在变量中
int[] nums = hello.getArray(8);
// 将数组转换为字符串并输出
System.out.println(Arrays.toString(nums));
}
/*
* 功能:创建指定长度的int型数组,并生成100以内随机数为数组中的每个元素赋值
* 定义一个带参带返回值的方法,通过参数传入数组的长度,返回赋值后的数组
*/
public int[] getArray(int length) {
// 定义指定长度的整型数组
int[] nums = new int[length];
// 循环遍历数组赋值
for (int i = 0; i < nums.length; i++)
{
// 产生一个100以内的随机数,并赋值给数组的每个成员
nums[i]=(int)(Math.random()*100);
}
注意其中产生随机数的方法 Math.random()*
方法的重载
重载:方法参数的个数、顺序或类型不同
判断方法重载的依据:
1、 必须是在同一个类中
2、 方法名相同
3、 方法参数的个数、顺序或类型不同
4、 与方法的修饰符或返回值没有关系