Why My list values change?

It’s My code

public List<string> listA = new List<string>();
public List<string> listB = new List<string>();
	void Start () {
        listA.Add("a");
        listA.Add("b");
        listA.Add("c");
        listA.Add("d");
	}

    void Update() {
        if (Input.GetKeyDown(KeyCode.R))
        {
            listB = listA;
            listB.RemoveAt(0);
        }
    }

listA values : a,b,c,d

When I getkeydown listA values will change.

listA values : b,c,d

Why this? I just change listB values.

Because your listB stores a reference to your listA.

If you want to copy items from listB to listA then you might want to do it explicitly like:

void Start()
{
         listA.Add("a");
         listA.Add("b");
         listA.Add("c");
         listA.Add("d");

         for (int i=0; i< listA.Length; i++)
        {
              listB.Add(listA*);*

}
}
and remove
listB = listA;
from update() method.