Joeyos's Blog Software Engineer

java基础学习

2018-05-13
Quan Zhang

设置classpath

先找当前,再找c:\myclass\jxl.jar;

set classpath=.;c:\myclass\jxl.jar;

标识符

不能以数字开头,不能跟关键字相同。

常量与变量

单精度:float f = 2.3f;

双精度:double d = 2.3;

byte b = 3;
b = b + 2;
/*
b为8位
整数为4个8位
不能相加
(1)自动类型提升:b+2->4个8位,赋给byte出错
(2)强转:b=(byte)(b+2);
*/

运算符

++运算

a = 3;
b = a++;
/*
先赋值,后自加
b=3;
a=4;
*/

int->short出错

short s=3;
s=s+5;//错,报错损失精度
s+=5;//对,自动转换

位运算

(1)3«1=6;相当于3*2^1

(2)6»2=1;相当于6/(2^2)

(3)»右移,最高位为1的话,移位后补1;为0的话补0

(4)»>右移,无论最高位为啥,移位后都补0

(5)6&3=110&011=010=2

(6)异或同一个数两次,还是那个数

(7)乘法用位运算:2x8 = 2«3

函数重载

在同一个类中,允许存在一个以上的同名函数,只要参数个数、参数类型不一样即可重载

public static int add(int x, int y)
public static int add(int x, int y, int z)//重载
public static void add(int x,int y)//没有重载
public static boolean add(int x)//重载

数组

(1)int[] x=new int[3];

(2)int[] arr=new int[]{1,3,5,7,9};

(3)置换:swap(arr, x, y)

int swap(int[] arr,int x,int y)
{
	int temp = arr[x];
	arr[x] = arr[y];
	arr[y] = temp;
}

(4)10进制->16进制

public static void toHex(int num)
{
	StringBuffer sb = new StringBuffer();
	for(int x=0;x<8;x++)
	{
		int temp=num & 15;
		if(temp>9)
			sb.append((char)(temp-10+'A'));
		else
			sb.append(temp);
		num=num>>>4;
	}
	System.out.println(sb.reverse());
}

String转int

有2种方法:

1) int i = Integer.parseInt([String]);

2) int i = Integer.valueOf(my_str).intValue();

int转String

有3种方法:

1) String s = String.valueOf(i);

2) String s = Integer.toString(i);

3) String s = “” + i;

初始化二维数组3种方法

//第一种方式
int a[][]={...};
//第二种方式
int[][] ints = new int[4][2];
ints[i][j] =__; //分别赋值
//第三种方式:第二维的长度可以动态申请
int[][] arr3 = new int[5][];//五行的长度
for(int i=0; i<arr3.length; ++i)
{
    arr3[i]=new int[i+1];//列的长度每次都变化。每次都要重新申请空间(长度)
    for(int j=0; j<arr3[i].length; ++j)
        arr3[i][j]= i+j;
}

List集合

添加、获取、删除元素

import java.util.ArrayList;
import java.util.List;
public class HelloWorld
{
	public static void main(String[] args)
	{
		List<String> person=new ArrayList<>();
		person.add("jackie");//索引为0  //.add(e)
		person.add("peter");//索引为1
		person.add("annie");//索引为2
		person.add("martin");//索引为3
		person.add("marry");//索引为4
		 
		person.remove(3);   //.remove(index)
		person.remove("marry");//.remove(Object o)
		 
		String per="";
		per=person.get(1);
		System.out.println(per);//.get(index)
		 
		for (int i = 0; i < person.size(); i++) {
			System.out.println(person.get(i));//.get(index)
		}
	}
}

是否包含某个元素

List<String> fruits=new ArrayList<>();
	fruits.add("苹果");
	fruits.add("香蕉");
	fruits.add("桃子");
	//for循环遍历list
	for (int i = 0; i < fruits.size(); i++) {
		System.out.println(fruits.get(i));
	}
	String appleString="苹果";
	//true or false
	System.out.println("fruits中是否包含苹果:"+fruits.contains(appleString));
	 
	if (fruits.contains(appleString)) {
		System.out.println("我喜欢吃苹果");
	}else {
		System.out.println("我不开心");
	}

根据索引将元素数值替换

String a="白龙马", b="沙和尚", c="八戒", d="唐僧", e="悟空";
	List<String> people=new ArrayList<>();
	people.add(a);
	people.add(b);
	people.add(c);
	people.set(0, d);//.set(index, element);//将d唐僧放到list中索引为0的位置,替换a白龙马
	people.add(1, e);//.add(index, element);//将e悟空放到list中索引为1的位置,原来位置的b沙和尚后移一位
	 
	//增强for循环遍历list
	for(String str:people){
		System.out.println(str);

查看元素的索引

List<String> names=new ArrayList<>();
	names.add("刘备");//索引为0
	names.add("关羽");//索引为1
	names.add("张飞");//索引为2
	names.add("刘备");//索引为3
	names.add("张飞");//索引为4
	System.out.println(names.indexOf("刘备"));
	System.out.println(names.lastIndexOf("刘备"));
	System.out.println(names.indexOf("张飞"));
	System.out.println(names.lastIndexOf("张飞"));

根据元素索引位置进行的判断

if (names.indexOf("刘备")==0) {
    System.out.println("刘备在这里");
}else if (names.lastIndexOf("刘备")==3) {
    System.out.println("刘备在那里");
}else {
    System.out.println("刘备到底在哪里?");
}

利用索引生成新的集合(截取)

List<String> phone=new ArrayList<>();
	phone.add("三星");//索引为0
	phone.add("苹果");//索引为1
	phone.add("锤子");//索引为2
	phone.add("华为");//索引为3
	phone.add("小米");//索引为4
	//原list进行遍历
	for(String pho:phone){
		System.out.println(pho);
	}
	//生成新list
	phone=phone.subList(1, 4);
	//.subList(fromIndex, toIndex)
	//利用索引1-4的对象重新生成一个list,但是不包含索引为4的元素,4-1=3
	for (int i = 0; i < phone.size(); i++) {
		// phone.size() 该方法得到list中的元素数的和
		System.out.println("新的list包含的元素是"+phone.get(i));
	}

对比两个list中的所有元素

//1.
if (person.equals(fruits)) {
    System.out.println("两个list中的所有元素相同");
}else {
    System.out.println("两个list中的所有元素不一样");
}
//2.       
if (person.hashCode()==fruits.hashCode()) {
    System.out.println("我们相同");
}else {
    System.out.println("我们不一样");
}

判断list是否为空

if (person.isEmpty()) {
    System.out.println("空的");
}else {
    System.out.println("不是空的");
}

返回Iterator集合对象

System.out.println("返回Iterator集合对象:"+person.iterator());

将集合转换为字符串

String liString="";
liString=person.toString();
System.out.println("将集合转换为字符串:"+liString);

将集合转换为数组

System.out.println("将集合转换为数组:"+person.toArray());

集合类型转换

//1.默认类型
List<Object> listsStrings=new ArrayList<>();
  for (int i = 0; i < person.size(); i++) {
    listsStrings.add(person.get(i));
}
//2.指定类型
List<StringBuffer> lst=new ArrayList<>();
  for(String string:person){
  lst.add(StringBuffer(string));
}

去重复

List<String> lst1=new ArrayList<>();
	lst1.add("aa");
	lst1.add("dd");
	lst1.add("ss");
	lst1.add("aa");
	lst1.add("ss");

	//方法 1
	for (int i = 0; i <lst1.size()-1; i++) {
		for (int j = lst1.size()-1; j >i; j--) {
			if (lst1.get(j).equals(lst1.get(i))) {
				lst1.remove(j);
			}
		}
	}
	System.out.println(lst1);
	 
	//方法 2
	List<String> lst2=new ArrayList<>();
	for (String s:lst1) {
		if (Collections.frequency(lst2, s)<1) {
			lst2.add(s);
		}
	}
	System.out.println(lst2);

Similar Posts

下一篇 java之LeetCode

Comments