数据类型相关
byte b1 = 1;
byte b2 = 2;
b2+=b1;
System.out.println("b2 : "+ b2);
byte b = 10;
long l = 30;
System.out.println(l>b);
运算符相关
int a = 3;
int b = 5;
a = a^b;
b = a^b;
a = a^b;
System.out.println("a = "+ a+" b="+b);
System.out.println(3>>>1);
System.out.println(3>>>2);
import java.io.*;
class ImageTest
{
public static void main(String[] args) throws Exception
{
File inFile = new File("d:\\加密的图片.jpg");
File outFile = new File("d:\\解密的图片.jpg");
FileInputStream input = new FileInputStream(inFile);
FileOutputStream output = new FileOutputStream(outFile);
int content = 0;
while((content = input.read())!=-1){
output.write(content^1024);
}
output.close();
input.close();
}
}
while(false){
System.out.println("Hello World!");
}
int count =0;
while(true){
System.out.println("Hello World!");
}
count++;
流程控制语句
aaa:for(int j = 0 ; j<4 ; j++){
bbb:for(int i = 0 ; i< 5 ; i++){
System.out.println("hello world");
break aaa;
}
}
排序
public static void main(String[] args)
{
int[] arr = {12,5,17,8,9};
selectSort(arr);
}
public static void selectSort(int[] arr){
for(int j = 0; j<arr.length-1; j++){
for(int i = j+1 ; i<arr.length ; i++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.print("目前的元素:");
for (int i = 0 ; i<arr.length ;i++){
System.out.print(arr[i]+",");
}
}
public static void main(String[] args)
{
int[] arr = {12,8,17,5,9};
bubbleSort(arr);
}
public static void bubbleSort(int[] arr){
for(int j = 0 ; j<arr.length-1 ; j++){
for(int i = 0 ; i<arr.length-1-j ; i++){
if(arr[i]>arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
System.out.print("目前的元素:");
for (int i = 0 ; i<arr.length ;i++){
System.out.print(arr[i]+",");
}
}
public static void main(String[] args)
{
int[] arr = {12,16,19,23,54};
int index = halfSearch(arr,116);
System.out.println("元素所在的索引值是:"+ index);
}
public static int halfSearch(int[] arr, int target){
int max = arr.length-1;
int min = 0;
int mid = (max+min)/2;
while(true){
if(target>arr[mid]){
min = mid+1;
}else if(target<arr[mid]){
max = mid -1;
}else{
return mid;
}
if (max<min){
return -1;
}
mid = (min+max)/2;
}
}
public static int searchEle(int[] arr, int target){
for(int i = 0 ; i<arr.length ; i++){
if(arr[i]==target){
return i;
}
}
return -1;
}
字符串
new String("abc")创建了几个对象?
两个对象, 一个对象是 位于字符串常量池中,一个对象是位于堆内存中。
如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer)。
StringBuffer 其实就是一个存储字符 的容器。
使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?
StringBuffer 底层是依赖了一个字符数组才能存储字符数据 的,该字符串数组默认 的初始容量是16, 如果字符数组的长度不够使用 死,自动增长1倍。
容器的具备 的行为:
容器的具备 的行为
String
增加
append(boolean b) 可以添加任意类型 的数据到容器中
insert(int offset, boolean b) 指定插入的索引值,插入对应 的内容。
删除
delete(int start, int end) 根据指定的开始与结束的索引值删除对应的内容。
deleteCharAt(int index) 根据指定 的索引值删除一个字符。
修改
replace(int start, int end, String str) 根据指定 的开始与结束索引值替代成指定的内容。
reverse() 翻转字符串缓冲类的内容。 abc--->cba
setCharAt(int index, char ch) 把指定索引值的字符替换指定的字符。
substring(int start, int end) 根据指定的索引值截取子串。
ensureCapacity(int minimumCapacity) 指定StringBuffer内部的字符数组长度的。
查看
indexOf(String str, int fromIndex) 查找指定的字符串第一次出现的索引值,并且指定开始查找的位置。
lastIndexOf(String str)
capacity() 查看当前字符数组的长度。
length()
charAt(int index)
toString() 把字符串缓冲类的内容转成字符串返回。
StringBuffer 与 StringBuilder的相同处与不同处:
相同点:
1. 两个类都是字符串缓冲类。
2. 两个类的方法都是一致的。
不同点:
1. StringBuffer是线程安全的,操作效率低 ,StringBuilder是线程非安全的,操作效率高。
2. StringBuffer是jdk1.0出现 的,StringBuilder 是jdk1.5的时候出现的。
推荐使用: StringBuilder,因为操作效率高。
其他
一个java应用程序至少有几个线程?
至少有两个线程, 一个是主线程负责main方法代码的执行,一个是垃圾回收器线程,负责了回收垃圾。