《Java课本》笔记

Java先编译成字节码,后用JVM解释字节码。

它一次只将字节码中的一个指令翻译为目标机器语言代码,翻译完一步之后就立即执行,而不是将整个程序一起翻译。

用final声明常量,例:final int a = 1;

利用Scanner类创建一个对象,并将它的引用值赋给变量input。例:double radius = input.nextDouble();

明确导入 import java.util.Scanner;

通配符导入 import java.util.*;导入包中的所有类。

注意,除非要在程序中使用某个类,否则被导入包中的这些类的信息在编译时或运行时是不被读入的。导入语句只是告诉编译器在什么地方能找到这些类。

标识符是为了标识程序中诸如类、方法、变量等元素而采用的命名。

常量的所有字母都应该大写,两个单词之间用下划线连接

命名类时不要选择Java库中已经使用的名称。

当两个整数相除时,商是整数,小数部分被舍去。如:5/2=2;-5/2=-2;

Math类中包含pow方法

整型字面值默认是int类型的,为了表示一个long型的整型字面值,需要在其后加字母L,例如2147483648L或2147483648l,(推荐L)

要表示一个二进制整数字面值,在数字前使用0B或0b;

表示八进制,数字前加0,如0777;

表示十六进制,数字前加0X;

Java允许在一个数值型字面值的两个数字间使用下划线,如long ssn = 232_45_4519;

然而_45和45_是错误的,下划线必须在两个数字之间。

浮点型默认为double,可以在末尾加f或F表示该字面型为float,

科学计数法,如1.23456E2,或1.23456E+2

这些数在计算机内部都是以科学计数法的形式存储的。

float的精度有7到8位,double的精度有15到17位。

计算顺序,首先计算乘法、除法和求余,最后执行加法和减法运算,同级按从左到右顺序计算。

int x = 2;System.out.println(x += 2);输出4

可以将一个数值赋值支持更大数值范围的类型的变量,如可以将long赋给float

Java可以自动扩大类型,但是缩小类型必须显式完成。(int)1.7

注意!Java中,增强赋值表达式实现为x1=(T)(x1 op x2),这里T是x1的类型,例:

int sum = 0;        sum += 4.5;        sum += 4.5;        System.out.println(sum);输出8

例:可以使用(int)(x * 100 + 0.5)/100向上四舍五入为保留小数点后两位。

软件开发过程

需求规范、系统分析、系统设计、实现、测试、部署、维护。

(int)(Math.random()*10)返回0-9之间的随机整数

^亦或逻辑运算符   a^b等于a!=b

p1 || p2,若p1为ture,则不计算p2

p1 && p2,若p1为false,则不计算p2

操作符的优先级和结合规则

一元加减号>(type)类型转换>!(非)>乘除求余>二元加减法>比较操作符>(==.!=)相等操作符>(^)亦或>(||)条件与>(=.+=.-=等)赋值运算符

math类ceil(x).floor(x).rint(x).round(x)方法

math类在程序中使用,但是并没有导入,因为它在java.lang包中,在java程序中,java.lang包中的所有类是可以隐式导入的。

注意,字符串字面值必须括在双引号中,而字符必须括在单引号中。例:“A”是字符串,‘A'是字符

转义字符//为/,/"为",\b退格键,\t为tab键,\n换行符

如果整数转换为char类型,只用到该数据的低十六位,其余部分都被忽略。

要将一个浮点值转换成char型时,首先将浮点值转换成int型,然后将这个int值转换为char类型。

当一个char型数据转换成数值型,它的Unicode就被转换成某个指定的数值类型。

0 ~ FFFF的数可以隐式转换成字符型数据。不在此范围,需要显示转换。

Unicode,统一码,它为每种语言中的每个字符设定了统一并且唯一的二进制编码。

字符的比较是通过比较两个字符的Unicode值实现的。

Java的Character类提供isDigit等类

String类型不是基本类型,包含在String类中,是一个引用类型。

为方便起见,Java允许在不创建新变量的情况下,使用字符串字面值直接引用字符串。例:"Welcome to Java".length()

s.charAt(index)用于提取字符串s中的某个特定字符。

s.concat(s1)用于连接字符串。s3 = s1 + s2;

s.toLowerCase()   s.toUpperCase()转换大写   s.trim()删除两旁的空格

string s = System.in.nextLine();

注意!为了避免错误,程序中不要在基于标记的输入后使用基于行的输入!原因在12.11.4中解释

String类的方法:equals(s1)\equalsIgnoreCase(s1)不区分大小写\compareTo比较\compareToIgnoreCase(s1)\startsWith(s1)以特定前缀开始\endsWith\contains子串

字符串不能用><等比较操作符来比较两个字符串。

??操作符==只能告诉你两个字符串是否指向同一对象,不能告诉你是否相等。

??String a = "asd";        String b = "a" + "s" + "d";        System.out.println(a == b);为什么是ture

s.subString(beginIndex)\s.subString(beginIndex,endIndex)位于endIndex索引位置的字符不会返回

s.indexOf(ch)\s.index(ch,fromIndex)\indexOf(s)\indexOf(s,fromIndex)\lastIndex(ch)\lastIndex(ch,fromIndex)返回fromIndex之前出现的第一个ch的下标,lastIndexOf(s),lastIndex(s,fromIndex)

int a = "welcome java".lastIndexOf("java",8);System.out.print(a);输出8

字符串和数值之间的转换:

如将数值型字符串转换成数值。要将字符串转换成int值,使用Integer.parseInt方法。

如int intValue = Integer.parseInt(intString);

double doubleValue = Double.parseDouble(doubleString);

将数值转换成字符串,只需要简单地加上一个"",如String s = number + "";

用Unicode表示输出,例:System.out.println('\u0031');

'\uxxxx'表示Unicode编码十六进制表示的字符。例'\u003A'表示冒号:

浮点数以%f输出


《黑马Java》网课

int[] arr =new  int[100]

arr存储在栈内存中,new int[]存储在堆内存中。

栈内存存储局部变量,堆内存存储new出来的内容

Java的Debug……

封装可以提高数据的安全性,因为在方法中可以对数据安全进行校验。

API:application programming interface应用程序编程接口

Java的API就是在JDK中提供的有各种功能的Java类

String在lang包下,不需要额外导入

string不可改变,但是可以被共享

使用时如同char[],但底层实现是byte[]

String的构造方法

public String()

public String(char[] chs)

public String(byte[] bys)

String s = "abc"

1.通过new创建的String对象,地址肯定是不同的

2.以“”给出的String对象,只要字符串内容相同,只会建立一个String对象

==比较:若比较基本类型,比较的是数据内容;若比较引用类型,比较的是地址值。

字符串比较内容应该使用.equals()方法

如果对String进行拼接操作,都会构建一个新的String对象,耗时又费空间。

StringBuilder 是一个可变的字符串类,我们可以看作是一个容器。

StringBuilder构造方法:StringBuilder()、StringBuilder(String str)

append(任意类型)添加,有个叫链式编程的东西,例:

sb.append("hello").append("world").append("!");

reverse()反转

把String转为StringBuilder 可以方便的使用reverse()

集合基础ArrayList,可调整大小的数组实现

import java.util.ArrayList;

Class  ArrayList<E>        E为此列表中元素的类型,泛型,一种特殊的数据类型

public ArrayList()

public boolean add(E e)

public void add(int index,E element)

ArrayList<String> array = new ArrayList<>();//jdk7以后的版本

array.add()添加元素

array.add(int index,Element e);

super关键字的使用与this相似,不过是父类的引用,可以访问构造方法、成员方法

子类的所有构造方法默认都会访问父类中的无参构造方法

因为子类会继承父类中的数据,可能还会使用父类中的数据。所以,子类的初始化之前,一定要先完成对父类的初始化。

每一个子类构造方法的第一句默认都是super()

如果父类中m欸有给出无参构造方法,只有带参构造方法,解决方案:
1.通过super关键字去显式的调用父类的带参构造方法

2.在父类中自己提供一个无参构造方法。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值