Java_2_语言基础知识

语言基础知识

简单数据类型

数据类型划分

整数byte,short,int,longbyte 8;short 16 int 32; long 64
浮点类型float,doublefloat必须在数字后加f
字符类型char常量:单括号;变量:在机器占16位,0~65535
布尔类型booleantrue,false
复合数据类型class interface 数组,字符串interface查一下
常量变量
变量:
  1. 对大小写敏感
  2. 对长度没有限制
  3. 必须先初始化再使用
常量:final
final  int num = 100

数据类型转换

自动:

混合运算中先转换为同一类型再进行运算

byteshortchar->int->long->float->double
强制类型转换:
int i;
byte b = (byte)i;

运算符和表达式

运算符:

按功能划分:
算术运算符+,-,*,/,%,++,–
关系运算符
布尔逻辑运算符!,&&,||
位运算符>>,<<,>>>,&(与),|(或),^(异或),~
赋值运算符=,+=
条件运算符?:
其他分量运算符. ,下标运算符[],实例运算符instanceof,内存分配new
优先次序:

表达式:

短路逻辑运算符&& ||

数学函数

import

控制语句

块作用域

块:由一对花括号括起来的若干简单的语句;

一个块可以嵌套在另一个块中;

不能在嵌套的两个块中声明同名的变量

分支语句:

if else
Switch case default break
  • 表达式expression的返回值类型必须是这几种类型之一:int,byte,char,short,枚举常量,字符串(JAVA SE 7)
  • break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break

循环语句:

while
do while
for

跳转语句:

break
  1. Switch语句中

  2. Java中可以为每个代码块加一个标号,格式如下:BlockLabel:{codeBolck}

    break跳出它所指定的块,并从紧跟该块的第一条语句处执行:

    break BlockLabel;
        a:{……
          b:{……
            c:{……
                break b;
               ……//此处的语句块不被执行
              }
             ……//不被执行
              
            }
           ……//从此处开始执行
          }
    
continue

用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断。对于for语句,在进行终止条件的判断前,还要先执行迭代语句

return

从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。

例外处理语句:

try,catch,finally,throw

数组

一维数组

初始化:
静态初始化:
int intArray[] = {1,2,3,4}
动态初始化
简单类型

常用:

int[] a = new int[100];
int intArray[];
intArray = new int[5];
复合类型
Date dateArray[];
dateArray = new Date[3];
dateArray[0] = new Date();
dateArray[1] = new Date();
dateArray[2] = new Date();
引用:

arrayName[index]

每个数组都有一个属性length指明它的长度,intArray.length指明其长度

数组拷贝:
引用拷贝:

允许将一个数组变量拷贝给另一个数组变量,两个变量将引用同一个数组

int[] smallPrimes = {1,2}
int[] luckyNumbers = smallPrimes;
值拷贝:一个数组的值拷贝到一个新的数组,用类的方法
int[] copiedL = Arrays.copyOf(L,L.length);
数组排序:

Arrays类中的sort方法

int[] a = new int[];
Arrays.sort(a);
for each 循环

依次处理数组中的每个元素,而不必指定下标值

for(variable:collection) statement

variable:暂存集合中元素的变量

collection:数组或实现了接口的变量

eg:

for(int element:a)
    System.out.println(element);

打印数组a的元素,一个元素占一行。

多维数组:

被看做数组的数组

定义:
type [][]arrayName;
type arrayName[][];
初始化:
静态初始化
int intArray[][] = {{1,2},{2,3},{3,4,5}};

java语言中,由于把二维数组看做是 数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同

动态初始化
1.直接为每一维分配空间
arrayName = new type[arrayLength1][arrayLength2];
int a[][] = new int[2][3];
2.从最高维开始,分别为每一维分配空间
arrayName = new type[arrayLength1][];
arrayName[0] = new type[arrayLength20];
arrayName[1] = new type[arrayLength21];
...
arrayName[arrayLength1-1] = new type[arrayLength2n];

eg:

int a[][] = new int[2][];
a[0] = new int[3];
a[1] = new int[5];
3.二维复合数据类型

必须为每个数组元素单独分配空间

String s[][] = new String[2][];
s[0] = new String[2];
s[1] = new String[2];
s[0][0] = new String("Good");
s[0][1] = new String("luck");
s[1][0] = new String("to");
s[1][1] = new String("you");
内存分配过程

字符串的处理

字符串的表示

Java语言中,把字符串作为对象来处理,类String StringBuffer都可以用来表示一个字符串

字符串常量

是用双引号括住的一串字符。

String表示不可变字符串
String s = new String();//生成一个空串
String a = "hello";

不同方式表示字符串"abc"

char chars1[]={'a','b','c'};
char chars2[] = {'a','b','c','c','d'};
String s1 = new String(chars1);
String s2 = new String(chars1,0,3);
StringBuffer表示字符串
StringBuffer();//分配16个字符的缓冲区
StringBuffer(int len);//分配len个字符的缓冲区
StringBuffer(String s);//除了按照s的大小分配空间外,再分配16个字符的缓冲区

访问字符串

类String
length返回字符串长度
charAt()public char charAt(int index) 返回char指定索引处的值。指数范围为0length() - 1 。该序列的第一个char值在索引0 ,下一个索引为1 ,依此类推,与数组索引一样。如果char由索引指定的值是surrogate ,则返回所述替代值。
getChars()public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将此字符串中的字符复制到目标字符数组中。要复制的第一个字符是索引srcBegin ; 要复制的最后一个字符在索引srcEnd-1 (因此要复制的srcEnd-srcBegin总数为srcEnd-srcBegin )。 字符被复制到的子阵列dst开始于索引dstBegin和在索引结束: dstbegin + (srcEnd-srcBegin) - 1
getBytes()public byte[] getBytes() 使用平台的默认字符集将此String编码为字节序列,将结果存储到新的字节数组中。
indexOf()①public int indexOf(int ch) 返回指定字符第一次出现的字符串内的索引。如果与值的字符ch在此表示的字符序列发生String第一事件发生之对象,则索引(在Unicode代码单元)被返回。对于从0到0xFFFF(含)范围内的ch的值,这是最小值k ,使得: this.charAt(k) == ch 是真的。对于ch其他值,它是最小值k ,使得: this.codePointAt(k) == ch 是真的。在这两种情况下,如果此字符串中没有此类字符,则返回-1 。 ② public int indexOf(int ch, int fromIndex) 返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。如果与值的字符ch在此表示的字符序列发生String的索引不小于在对象fromIndex ,则返回第一个这样的匹配项的索引。 对于从0到0xFFFF(含)范围内的ch的值,这是最小值k ,使得: (this.charAt(k) == ch) && (k >= fromIndex) 是真的。对于ch其他值,它是最小值k ,使得: (this.codePointAt(k) == ch) && (k >= fromIndex) 是真的。在这两种情况下,如果这个字符串在位置fromIndex之间或之后没有出现,则返回-1 。fromIndex的价值没有fromIndex 。 如果它是否定的,它具有与零一样的效果:可以搜索整个字符串。 如果它大于此字符串的长度,它具有与该字符串的长度相等的效果: -1被返回。 所有索引在char值(Unicode代码单位)中char
lastIndexOf()public int lastIndexOf(int ch) 返回指定字符的最后一次出现的字符串中的索引。
toCharArray()public char[] toCharArray() 将此字符串转换为新的字符数组。 结果 一个新分配的字符数组,其长度是该字符串的长度,其内容被初始化为包含由该字符串表示的字符序列。
类StringBuffer
length()public int length() 返回长度(字符数)。
charAt()public char charAt(int index) 返回char在指定索引在这个序列值。 第一个char值为索引0 ,下一个索引为1 ,依此类推,就像数组索引一样
getChars()public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 字符从该序列复制到目标字符数组dst 。要复制的第一个字符是索引srcBegin ;要复制的最后一个字符在索引srcEnd-1 。要复制的srcEnd-srcBegin总数为srcEnd-srcBegin 。字符被复制到的子阵列dst开始于索引dstBegin和在索引结束: dstbegin + (srcEnd-srcBegin) - 1
capacity()public int capacity() 返回当前容量。 容量是新插入字符可用的存储量,超过此值将进行分配

修改字符串

类String

为不可变字符串->只能将变量引向另一个字符串

方法
concat()public String concat(String str) 将指定的字符串连接到该字符串的末尾。如果参数字符串的长度为0 ,则返回此String对象。 否则,返回一个String对象,表示一个字符序列,该字符序列是由该String对象表示的字符序列与由参数字符串表示的字符序列的级联。 例子: “cares”.concat(“s”) returns “caress” “to”.concat(“get”).concat(“her”) returns “together”
replace()public String replace(char oldChar, char newChar)返回从替换所有出现的导致一个字符串oldChar在此字符串newChar 。如果在String oldChar表示的字符序列中没有发生String ,则返回对该String对象的引用。 否则, String被返回对象,它表示一个字符序列与由本表示的字符序列String除了的每次出现对象, oldChar通过的发生替换newChar 。 例子: “mesquite in your cellar”.replace(‘e’, ‘o’) returns “mosquito in your collar” “the war of baronets”.replace(‘r’, ‘y’) returns “the way of bayonets” “sparring with a purple porpoise”.replace(‘p’, ‘t’) returns “starring with a turtle tortoise” “JonL”.replace(‘q’, ‘x’) returns “JonL” (no change)
substring()public String substring(int beginIndex, int endIndex) 返回一个字符串,该字符串是此字符串的子字符串。子串开始于指定beginIndex并延伸到字符索引endIndex - 1 。因此,子串的长度为endIndex-beginIndex 。例子: “hamburger”.substring(4, 8) returns “urge” “smiles”.substring(1, 5) returns “mile”
toLowerCase()public String toLowerCase() 将所有在此字符String使用默认语言环境的规则,以小写。 这相当于打电话toLowerCase(Locale.getDefault())
toUpperCase()public String toUpperCase() 使用默认语言环境的规则将此String中的所有字符转换为大写。 此方法相当于toUpperCase(Locale.getDefault())

eg:

String greeting = "hello";
String s = greeting.substring(0,3);//s -> "hel"
类StringBuffer
方法
append()public StringBuffer append(char c) 将char参数的字符串表示法附加到此序列。该参数附加到此序列的内容。 该序列的长度增加1
insert()public StringBuffer insert(int offset, char[] str) 在此序列中插入char数组参数的字符串表示形式。数组参数的字符在offset的位置插入到该序列的内容中。 该序列的长度增加参数的长度。 总体效果就好像第二个参数通过方法转换为一个字符串,并且该字符串的字符然后是inserted到指定的偏移量的这个字符序列。 offset参数必须大于或等于0 ,并且小于或等于此序列的length
setCharAt()public void setCharAt(int index, char ch) 指定索引处的字符设置为ch 。该序列被改变以表示一个新的字符序列,其是相同的原字符序列,不同之处在于它包含字符ch在位置index 。index参数必须大于或等于0 ,并且小于此序列的长度。

字符串的比较

String提供的

equals()

区分大小写

s.equals(t)//字符串s与t
"hello".equals(greeting)//字符串字面量?字符串常量?没搞懂
equalsIgnoreCase()

不区分大小写

==

只能确定两个字符串是否在同一个位置上

空串与Null串

空串

长度为零

str.length()==0  
str.equals("")
Null

变量还没有初始化

字符串的转化

java.lang.Object中提供了方法toString( )把对象转化为字符串

“+”操作

任何一个Java对象都可以转化为字符串

eg:

int age = 13;
String rating = "ag"+age
rating -> "ag13"
String s=new String(new StringBuffer("he is").append(age).append("years old"));

读取输入

输入

通过类Scanner从控制台输入

首先要写
程序最前面要写
import java.util.*;
main里边
Scanner in = new Scanner(System.in)
方法
输入一行

String name = in.nextLine();

读取一个单词(以空白符作为分隔符)

String firstName=n.next();

读取一个整数

int age = in.nextint();

读取一个浮点数

double e=in.nextDouble();

输出
System.out.print()

以x对应的数据类型所允许的最大非0数字位数打印输出x

System.out.println()
System.out.printf(“format”,object)

格式化输出

d,x(十六),o(八进制),s,c

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值