Java核心技术——基本结构

一、注释

//:注释内容从//开始到本行结尾

/*和*/:可以跨行注释,从/*开始,以*/结束(不能嵌套,即如果代码本身包含*/就不能用/*和*/将注释括起来)

/**和*/:用来自动生成文档,可以跨行注释,从/**开始,以*/结束


二、数据类型

1.Java是一种强类型语言,有8种基本类型:

  4种整型:int 4字节、short 2字节、long 8字节、byte 1字节

  2种浮点型:float 4字节、double 8字节

  1种字符型:char 1字节

  1种布尔型:boolean 1字节

2.整型的范围与机器无关,与C++不同,解决了平台移植问题

3.浮点型一般使用double,且有三个常量:

  Double.POSITIVE_INFINITY——正无穷大(一个正浮点数除以0的结果)

  Double.NEGATIVE_INFINITY——负无穷大

  Double.NaN——不是一个数字(0除以0的结果或者负数的平方根结果)

4.char用来表示字符常量,‘A’是编码为65所对应的字符常量,而“A”是一个包含字符A的字符串

5.boolean类型有false和true两个值,不能和整型值之间相互转换


三、变量

1.变量声明后需要显示初始化才能使用

2.关键字final声明常量,一旦被赋值就不能修改,常量名使用大写

3.使用static final设置类常量,定义在方法的外部,同一类的其他方法也可以使用这个常量。而且如果一个类常量被声明为public,那么其他类的方法也可以使用这个常量,按 类名.常量名 的写法使用

4.整数被0除会产生异常,浮点数被0除会得到无穷大或NaN结果

5.可以用中文作为变量名


四、运算符

1.逻辑运算符&&和||是按照短路方式求值的,即如果第一个操作数已经能够确定表达式的值,第二个操作数就不计算了。因此为提高计算效率,使用&&时尽可能将结果为false的可能性大的放前面;相反,使用||时,则将true可能性大的放前面

2.位运算符:

  &(与):0 & 0 = 0、0 & 1 = 0、1 & 0 = 0、1 & 1 = 1

  |(或):0 | 0 = 0、0 | 1 = 1、1 | 0 = 1、1 | 1 = 1

  ^(异或):0 ^ 0 = 0、0 ^ 1 = 1、1 ^ 0 = 1、1 ^ 1 = 0

  ~(非):~0 = 1、~1 = 0

  <<(左移)、>>(右移):将二进制左移或右移,用符号位填充高位

移位时右侧参数需要进行模32运算(long类型进行模64运算)。如,1 << 35与1 << 3与8是相同的

3.Math类提供一些基本的数学函数和运算,如 Math.sqrt、Math.pow、Math.sin和Math.PI(可以用import static java.lang.Math.*静态导入,就可以不用在数学方法名前添加前缀“Math.”)

4.当不同类型的数值进行二元操作时,会自动将两个数值转换成同一类型再进行计算

5.强制类型转换常用于父类类型的变量强制转换为子类类型,或者接口类型的变量强制转换为实现类的类型

6.布尔类型转换为数值类型可以使用条件表达式 b?1:0


五、字符串

1.标准Java类库中提供了一个预定义类String,每个双引号括起来的字符串都是String类的一个实例

2.任何一个Java对象都可以转换成字符串,字符串+整数时自动把整数转换成字符串

3.不能修改字符串中的字符,String类对象是不可变字符串,但可以改变它的引用

4.对于多次变化的字符串,可以使用StringBuffer和StringBuilder来处理以提高效率,StringBuffer是线程安全的,可以在多线程中使用,StringBuilder只能用在单线程中,但处理速度较快

5.检测两个字符串相等不能用==,应该用equals,==是比较两个String是否在内存中位于相同的位置


六、输入输出

1.通过控制台输入

<span style="font-size:14px;">Scnner in = new Scnner(System.in);
String name = in.nextLine(); //输入均可见
String age = in.nextInt();
String word = in.next();</span>
<span style="font-size:14px;">Console cons = System.console();
String username = cons.readLine("User name:");
char[] passwd = cons.readPassword("Password:"); //输入不可见,密码存取在一维字符数组中</span>
2.可以像C++一样格式化输出
<pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java"><span style="font-size:14px;">System.out.printf("Hello,%s.You are %d year old!", name, age);</span>
<span style="font-size:14px;"></span><pre name="code" class="java">System.out.printf("%tc", new Date()); //按格式打印日期
 
 
 
System.out.printf("%,.2f", 10000.0 / 3.0); 
 
3.可以用静态的String.format方法穿件一个格式化字符串,而不打印输出 
<span style="font-size:14px;">String message = String.format("Hello,%s.You are %d year old!", name, age);</span>
4.文件读取,用File对象构造一个Scanner对象,用与控制台相同的读取方式
Scanner in = new Scanner(new File("myfile.txt"));
5.写入文件,构造PrintWriter对象,只需提供文件名,要求文件不存在
PrintWriter out = new PrintWriter("myfile.txt");
out.println("hello world");

七、控制流程

1.if和else的子语句都需要语句块括起来

2.for是while的简便形式,都是在每轮循环开始前进行条件判断

3.少用或不用switch、break、continue和带标签的break


八、大数值

1.基本的整数和浮点数精度不满足需求,则可以使用java.math包的BigInteger和BigDecimal类,可以处理任意长度数字序列的数值,可以使用静态的valueOf方法将普通的数值转换为大数值

2.大数值的+、-、*、/、%需要用其专有的add、subtract、multiply、divide、mod方法进行计算


九、数组

1.for each循环遍历数组中所有元素:for (int element : a)

2.Arrays.toString(a)返回一个包含数组a元素和中括号的字符串,可用于打印数组

3.数组初始化时可以不需要调用new,直接赋值:int[] smallPrimes = { 1, 2, 3, 4, 5 };,甚至还可以初始化一个匿名数组:new int[] { 1, 2, 3, 4, 5 }

4.Java允许数组长度为0,可以创建长度为0的数组

5.数组拷贝时若使用 = ,则两个变量引用同一个数组

int[] a = { 1, 2, 3, 4, 5};
int[] b = a;
b[2] = 10; //a[2]也为10
6.数组正确拷贝应使用Arrays类的copyOf方法,第2个参数是新数组的长度。此方法通常用来增加数组大小,如果数组是数值型,多余元素将被赋值0;如果数组是布尔型,则将赋值为false
int[] b = Arrays.copyOf(a, 2 * a.length);
7.main方法的参数args用来接收命令参数,不包括程序名。

8.对数值型数组排序可以使用Arrays类中的sort方法,此方法使用了优化的快速排序算法。

9.二维数组是数组的数组,遍历时需要两个嵌套的循环。Arrays.deepToString(a)可以得到a数组的字符串。

for (double[] row : a)
    for (double value : row)
        do something with value





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值