Java 笔记

一、细小知识

变量:在Java 中, 不区分变量的声明与定义。
变量必须初始化
1. 声明常量
关键字:final
语法:final datatype C0NSTANTNAHE -value
例如:final double PI = 3.14159
习惯上常量名大写
为了在类中的多个方法中反复使用某个常量,将其设置为类常量

3. 从键盘读取数值
Scanner 对象的方法方法描述:
nextByte() 读取一个byte 类型的整数
nextShortO 读取一个short 类型的整数
nextlntO 读取一个int 类型的整数
nextLongO 读取一个long 类型的整数
nextFloat() 读取一个float 类铟的数
nextDoubleO 读取一个double 类型的数
4. 数值操作符
注意:操作符X 通常用在正整数上,实际上,它也可用于负整数和浮点值。只有当被除数是负数时,余数才是负的。
例如:-7%3 结果是-1, -12%4 结果0,-26%-8 结果是-2, 20%-13结果是7。
5. 幂运算
使用方法Math.pow(a,b)来计算

6. 整型直接量
整型直接量默认为int类型,它的值在-2147483 648 到 2 147 483 647
为了表示一个long型的整型直接量,需在末尾追加字母L或l,最好用大写的L
默认情况下,整型直接量是一个十进制整数。要表示一个二进制整数直接量,使用
Ob 或者0B ( 零B) 开头;表示一个八进制整數直接量,就用0 ( 零)开头,而要表示一个
十六进制整数直接量,就用Ox 或0X ( 零x) 开头。例如,
System.out.println(0B1111); // Displays 15
System.out,print1n(07777); // Displays 4095
System.out.println(0XFFFF); // Displays 65535
为了提高可读性,Java 允许在數值直接量的两个数字间使用下划线。例如,下面的
直接量是正确的long ssn =232_45_4519;

7. 浮点型直接量
浮点型直接量带小数点,默认情况下是double 型的。例如:6.0 被认为是double 型而不是float 型。可以通过在数字后面加字母f 或F 表示该数为float 型直接量,也可以在数字后面加d 或D 表示该数为double 型直接量。例如:可以使用100.2f 或100.2F 表示float型值,用100.2d 或100.2D 表示double 型值。
浮点型直接量也可以用科学记数法表示,例如,一种特定的语法可以用于表示科学记数法的数值。例如,1.23456 X 10^2 可以写成1.23456E2 或者1.234SeE+2,而
1.23456 x10^-2 等于1.234S6E-2。E (或e) 表示指数,既可以是大写的也可以是小写的。

8. 增强赋值操作符
操作符+、-、*、/、x 可以结合賦值操作符形成增强操作符。
增强陚值操作符在表达式中所有其他操作符计算完成后执行

9. 操作符的优先级和结合规则
操作符优先级与结合性表**(1)**括号用于强制求值的顺序以任何顺序进行。
具有更高级优先权的操作符更早地进行操作。
**(2)**对于同样优先级的操作符,它们的结合规则确定操作的顺序。
**(3)**除开賦值操作符的所有二元搡作符都是左结合的,陚值操作符是右结合的。

10.产生随机数
可以使用Math.random()来获得一个0.0 到1.0之间的随机double 值,不包括1.0
如何产生一个随机数i,使得0<=i<20?

double i=Math.random()*20;
如何产生一个随机数i,使得10<=i<20?
double a=Math.random()*20%10+10;

11.输入输出
11.1格式化输出:沿用C语言的printf输出
在这里插入图片描述
在这里插入图片描述
11.2文件输入输出
要想对文件进行读取, 就需要一个用File 对象构造一个Scanner 对象, 如下所示:

Scanner in = new Scanner(Paths.get("niyflle.txt") , "UTF-8") ;
文件需要一个启动路径,然而, 如果使用IDE, 那么启动路径将由IDE 控制。可以使用下面的调用方式找到路径的位置:
String dir = System.getPropertyC'user.dir") ://找到路径位置

如果觉得定位文件比较烦恼, 则可以考虑使用绝对路径, 例如:

“ c:\\mydirectory\\myfile.txt ” 或者
“ /home/me/mydirectory/myfile.txt” 、

1. 大数值:BigInteger类和BigDecimal类
可以处理包含任意长度数字序列的数值。前者整数运算,后者浮点数运算。
使用静态的valueOF方法可以将普通的数值转为大数值:

BigInteger a = BigInteger.valueOF(100);
但是没有+、=运算符来处理大数值,得用add和multiply方法。
Biglnteger c = a.add(b) ; // c = a + b
Biglnteger d = c.nultipiy(b.add(Biglnteger.valueOf(2))); // d = c *(b + 2)

不同于C++不可以在嵌套的块中重定义一个变量
但是for循环中的定义的变量只在循环中有效
因而不同的for循环可以定义相同的变量名

二、选择

1. boolean数据类型
声明一个具有值true或false的变量
注意:true 和 1不能互换,bool值和数值不兼容
注意:两个浮点数是不是和作==返回值的,因为有时候他们并不相等。
详解
2. if、switch语句
2.1switch语句
同C++风格一样。

3. 逻辑操作符
逻辑操作符:也称bool操作符,对布尔值进行操作时在这里插入图片描述
其中^异或操作符:仅当两个bool值不一样时为true。即B!=B2。

4.条件表达式:三目运算符:
y=(x>1)?1:0
==注意:==在此处,0或非0可以转化为布尔值;
5.带标签的break,continue语句:
为了支持goto语句适度使用有用论。
用于跳出,不能跳入,除非麻烦,不建议使用
用法:在希望跳出的最外层循环外放置标签 flag:,在需要跳出的时候使用break flag;

三、数学函数、字符和字符串

能力要求:
• 使用Math 类中的方法解决数学问题( 4.2 节)。
• 使用char 类型表示字符( 4.3 节)。
• 使用ASCII 码和Unicode 码来对字符编码( 4.3.1 节)。
• 用转义序列表示特殊字符(4.3.2 节)。
• 将数值转换为字符,以及将字符转换为整数( 4.3.3 节)。
• 使用Character 类中的静态方法来比较和测试字符(4.3.4 节)。
• 介绍对象和实例方法( 4.4 节)。
• 使用String 对象表示字符串(4.4 节)。
• 使用lengthO 方法来返回字符串长度( 4.4.丨节)。
• 使用charAt(i)方法来返回字符串中的字符(4.4.2 节)。
• 使用操作符+ 来连接字符串(4.4.3 节)。
• 返回大写字符串或者小写字符串,以及裁剪字符串(4.4.4 节)。
• 从控制台读取字符串(4.4.5 节)。
• 从控制台读取字符(4.4.6 节)。
• 使用equals 方法和compareTo 方法比较字符串(4.4.7 节)。
• 获取子字符串(4.4.8 节)。
• 使用indexOf 方法定位一个字符串中的字符或者子字符串(4.4.9 节)。
• 使用字符和字符串编程(GuessBirthday)( 4.5.1 节)。
• 将十六进制字符转换为十进制值(HexDigit2DeC)( 4.5.2 节)。
• 使用字符串修改彩票程序(LotteryUsingStrings)( 4.5.3 节)。
• 使用System.out.printf 方法来格式化输出(4.6 节)。

1. 常用数学函数
这些方法分为三类:三角函数方法( trigonometricmethod)、指教函数方法( exponent method) 和服务方法( service method)。
服务方法包括取整、求最小值、求最大值、求绝对值和随机方法。除了这些方法之外,Math 类还提供了两个很有用的double 型常量,PI ( TT ) 和E (自然对数的底)。可以在任意程序中用Math.PI 和Math.E 的形式来使用这两个常量。
1.1三角函数方法
在这里插入图片描述

1.2指数函数方法

1.3取整方法
在这里插入图片描述
1.4min、max 和abs 方法
min 和max 方法用于返回两个数( int、long、float 或double 型)的最小值和最大值。
例如,max(4.4,5.0) 返回5.0, 而m*in(3,2) 返回2。
abs 方法以返回一个数(int、long、float 或double 型)的绝对值。

四、字符、字符串

1.Unicode和ASCll码
常用字符的ASCLL码值
记住关键:0:48 A:65,a:97
2.特殊字符的转义序列

System.out.println(MHe said "Java is fun"")
	会报错,编译器认定第二个双引号为结束,要输出“ “ ”必须要用到转义字符\"
System.out.println("He said \"]ava is fun\"M");

在这里插入图片描述

3. 字符与数值转换
在这里插入图片描述

String类型
String对象的简单方法在这里插入图片描述在这里插入图片描述

(1)字符串的连接使用chartAt()方法或者用+,后者要求至少有一个操作数为字符串。

(2)操作符==只能检测string1 和string2是否指向同一个对象,但它不会告诉你它们的内容是否相同。因此,不能使用==操作符判断两个字符串变量的内容是否相同。
(3)字符串的输入:

Scanner input = new Scanner(system.*in);
String cityl = input.nextLineO;
String city2 = input.nextO;

input.nextline()可读取一行的内容,包括空格在内,直到回车。
input.next()遇到空格便停止读取了。

五、方法

  1. 作用:定义重用共享代码、组织简化编码。

  2. 定义方法
    修饰符 返回值类型 方法名( 参数列表)
    {
    // 方法体;
    }

    注意:Java中void函数也可以有返回,用于终止方法。return;即可

  3. 重载方法
    方法签名:由方法名和形参决定
    一个类中允许存在同名不同参的多个函数
    调用时编译器寻找最精确的匹配。如果它无法判断,则发生“歧义调用”,编译报错

  4. 变量的作用域:变量可以在程序中引用的范围。
    (1)局部变量:从声明始至语句块结束终。
    注意:可以在一个方法中的不同块里声明同名的局部变量,但是,不能在嵌套块中或同一块中
    两次声明同一个局部变量,—个变量可以在非嵌套的块中多次声明,而在嵌套块中只能声明一次
    —个变量可以在非嵌套的块中多次声明,而在嵌套块中只能声明一次

    六、一维数组

1.基本知识:
声明一个数组:
int [] aint a []//声明一个引用数组的变量,只是一个引用位置,目前并不分配任何空间
初始化有两种方法:
a = new int[100]//申请了具体的空间,此为引用,但a不具有指针运算
以上两步可以合并为一条语句
int [] a =new int[100]
int[] smallPrimes = { 2, 3, 5, 7, 11, 13 };//包括赋初值的初始化,不需要调用new
还可以初始化一个匿名数组:
new int [] { 17, 19, 23, 29, 31, 37 }
可以用这种初始化方法重新初始化一个数组:
smallPrimes = new int[] { 17, 19, 23, 29, 31, 37 };
数组的默认值:基本数据类型为0,char型的为\0000 ,boolean型的默认值为false。

1)得到数组的长度`a.length`
2)==foreach循环== 简单高效地遍历一个数组。(for each element in a)
for (int element : a)
	System.out.println(element);
	提示:
		打印一个一个数组可以调用Arrays类的toString方法。
		`System.out.println(Arrays.toString(a));`
		打印char[]类型的数组可以用一条打印语句
char[] city ={'D', 'a','l','l','a','s'};
System.out.println(city);
		输出显示为:Dallas。
3)数组传参传的是数组的引用

2.可变长参数列表:
具有同样类型的可变长度的参数可以传递给方法,并将作为數组对待。
可以把类型相同但个数可变的参数传递给方法。方法中的参数声明如下:
typeName… parameterName ( 类型名… 参数名)

class javatest
{
   public static  void main (String args[])
    {
        putout(99,1,57,34,74,68,6);//可以直接传任意数量、不定长的一组数据
    } 
    public static void putout(int...numbers)
    {
        for(int element : numbers)
        {    
            System.out.print(element+" ");
        }
        java.util.Arrays.sort(numbers);//排序
        System.out.println("\n74 is at "+java.util.Arrays.binarySearch(numbers,74));//二分查找
    }
}

3.相关方法-Arrays类java.util.Arrays
1)sort和parallelSort方法对整个数组或数组的部分进行排序

java.util.Arrays.sort(numbers);//对整个数组进行排序
java.util.Arrays.sort(numbers,0,6);//对部分排序numbers[0]~numbers[5]这6个数进行排序。

如果你的计算机有多个处理器,那么parallelSort将更加高效。
2)二分查找法binarySearch方法在数组中查找
操作前提:数组已经升序排好。
如果存在关键字,则返回其下标

java.util.Arrays.sort(numbers);
System.out.println("\n74 is at "+java.util.Arrays.binarySearch(numbers,74));

如果数组中不存在关键字,方法返回-( 插入点下标+1)
3) 使用equals方法检测两个数组是否相等(内容是否相同)。
4) 可以使用fill 方法填充整个数组或部分数组。例如:下列代码将5 填充到listl 中,
将8 填充到元素list2[1] 到list2 [5-1] 中。

int[] listl = {2 , 4, 7, 10};
int[] list2 - {2 , 4 , 77, 7, 10};
java.util .Arrays .fiil (list1, 5) ; // Fill 5 to the whole array
java.util .A r r a y s . 1, 5, 8) ; // Fill 8 to a partial array

5)还可以使用toString 方法来返回一个字符串,该字符串代表了数组中的所有元素。这
是一个显示数组中所有元素的快捷和简便的方法。例如,下面代码

int[] list = {2 , 4, 7, 10};
System.out.println(Arrays.toString(list)) ;
显示[ 2 , 4 , 7, 10]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

维何M762

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值